我有一个如下所示的源文件:
okay \t ADJ \t okay
apple \t N \t apple
etc.
我尝试过滤掉第二列和第三列,从一个字母开始,所有行包含' \','&'和字符串'(未知)'应排除在外。如果我把它写到一个新文件,代码工作得很好。但是,我尝试将整列保存为列表,似乎存在问题。
有人可以帮助我推理的错误吗?
with open(path_file) as f:
for line in f:
lemma = []
if re.match('[A-Z]|[a-z]', line):
line = line.strip()
columns = line.split('\t')
pos = columns[1]
lemmas = columns[2]
lemma.append(lemmas)
# print type(lemmas)
# type - str
if '(unknown)' in lemmas:
pass
elif '\\' in lemmas:
pass
elif '&' in lemmas:
pass
else:
lemma.append(lemmas)
# outfile.write(str(lemmas) + ':::' + str(pos) + '\n')
我正在使用python 2。
答案 0 :(得分:0)
我试图运行你的代码。通过该示例输入,它可以正常工作。
with open(path_file, 'r') as f:
lemma = []
for line in f:
if re.match('[A-Z]|[a-z]', line):
line = line.strip()
print('line:', line)
columns = line.split('\\t')
pos = columns[1]
lemmas = columns[2]
lemma.append(lemmas.strip())
# type - str
if '(unknown)' in lemmas:
pass
elif '\\' in lemmas:
pass
elif '&' in lemmas:
pass
# else:
# lemma.append(lemmas)
# outfile.write(str(lemmas) + ':::' + str(pos) + '\n')
print(lemma)
您需要将lemma
列表放在for循环之上,因为在每次迭代期间将其重新初始化为空列表,即输入文件的新行。
然后我评论了else
声明。
我还在\\t
方法中添加了\t
而不是split
。
希望这有帮助。