質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4261閲覧

リストに要素を追加しようとすると上書きされる

syen2501

総合スコア38

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/06 08:47

形態素・構文解析で時間に関係する単語を1つのリストにまとめようとした際、
appendを用いて追加しようとすると、なぜか上書きされてしまいます。

python

1# -*- coding: utf-8 -*- 2from pyknp import Juman 3from pyknp import KNP 4import sys 5import re 6import json 7import jctconv 8from collections import OrderedDict 9from joblib import Memory 10 11def parse_text(text, option='-tab'): 12 knp = KNP(option=option) 13 return knp.parse(text) 14 15class FindRange: 16 knp_option='-tab' 17 18 def __init__(self,text): 19 self.text = text 20 self.result = parse_text(self.text, option = FindRange.knp_option) 21 22 def get_range_word(self): 23 time_range = [] 24 for tag in self.result.tag_list(): 25 for mrph in tag.mrph_list(): 26 if not mrph.hinsi == '助詞' and not mrph.hinsi == '助動詞' and not mrph.bunrui == '読点' and not mrph.bunrui == '句点': 27 if tag.features.get('時間'): 28 time_range.append(mrph.midasi) 29 return time_range 30 31if __name__ == '__main__': 32 quantity_range = [] 33 time_range = [] 34 s_time_range = [] 35 file = 'sample' 36 with open('{}.txt'.format(file),encoding = 'utf-8') as f: 37 text_list = f.readlines() 38 for text in text_list: 39 if not text == '\n' and not text is None: 40 text = ''.join(text.split()) # スペースを除く 41 text = jctconv.z2h(text,kana = False, digit = True, ascii = True) 42 time_range = FindRange(text).get_range_word() 43 print(time_range) 44``` 45appendで要素追加した際、下記のように 46 47['以下'] 48['以下', '化'] 49['以下', '化', '化'] 50['以下', '化', '化', '化'] 51['以下', '化', '化', '化', '化'] 52['以下', '化', '化', '化', '化', '等'] 53['以下', '化', '化', '化', '化', '等', '化'] 54['以下', '化', '化', '化', '化', '等', '化', '市'] 55['以下', '化', '化', '化', '化', '等', '化', '市', '以下'] 56 57実行されるはずなのですが、上記のプログラムを実行すると、下記のようになってしまいます。 58 59<実行結果> 60['現在'] 61['年度'] 62['週'] 63['週', '日'] 64['週', '日', '年間'] 65['年'] 66['年', '月'] 67['年', '月', '日'] 68['年'] 69['年', '月'] 70['年', '月', '日'] 71['年', '月', '日', '現在'] 72['現在'] 73['現在'] 74[]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Python

time_range = FindRange(text).get_range_word()

これだと要素を丸々置き換えてしまっているので、継ぎ足したいならこのように書きます。

Python

1time_range += FindRange(text).get_range_word()

あるいは

Python

1time_range.extend(FindRange(text).get_range_word())

投稿2018/09/06 08:50

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syen2501

2018/09/06 09:11

ありがとうございました。 無事に解決することが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問