我目前正在使用 Python v2.6 并尝试将单词合并成一行。我的代码应该从文本文件中读取数据,其中我有两行数据,它们都是字符串。然后,它每次都取第二行数据,即句子的单词,它们用分隔符字符串分隔,例如:
在 .txt 内:
"delimiter_string"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"delimiter_string"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
...
那些“row_2_data”将在以后加起来一个句子。很抱歉,顺便说一句,介绍太长了。
这是我的代码:
import sys
import re
newLine = ''
for line in sys.stdin:
word = line.split(' ')[1]
if word == '<S>+BSTag':
continue
elif word == '</S>+ESTag':
print newLine
newLine = ''
continue
else:
w = re.sub('\[.*?]', '', word)
if newLine == '':
newLine += w
else:
newLine += ' ' + w
“BSTag”是“Sentence Begins”的标签,“ESTag”是“Sentence Ends”的标签:即所谓的“分隔符”。“re.sub”用于特殊目的,据我检查它可以工作。
问题是,当我在 linux 的命令行中使用以下命令执行这个 python 脚本时: $ cat file.txt | 脚本.py | 少,我看不到任何输出,而只是一个空白文件。
对于不熟悉linux的人来说,我猜这个问题与终端执行无关,所以你可以忽略这部分。简单地说,代码没有按预期工作,我找不到一个错误。
任何帮助将不胜感激,并感谢您阅读长篇文章:)
好的,问题解决了,实际上是语料库错误而不是编码错误。在文本文件中检测到一个非常奇怪的条目,这导致了问题。删除它解决了它。如果您想要类似的文本处理,您可以使用这两种方法:我的方法和“snurre”提供的方法。
干杯。