我是Python的新手。我正在尝试以以下格式从文本文件中提取数据:
85729块寻址索引近似文本检索
85730自动查询扩展基于分歧 等...
输出文本文件是单词列表,但没有重复条目。输入的文本文件可能有重复项。输出将如下所示:
块
寻址
索引
近似
等...
到目前为止我的代码,我能够获得单词列表,但包含重复项。我在输入文件之前尝试检查重复项,但输出没有反映出来。有什么建议?我的代码:
infile = open("paper.txt", 'r')
outfile = open("vocab.txt", 'r+a')
lines = infile.readlines()
for i in lines:
thisline = i.split()
for word in thisline:
digit = word.isdigit()
found = False
for line in outfile:
if word in line:
found = True
break
if (digit == False) and (found == False ):
outfile.write(word);
outfile.write("\n");
我不明白如何在Python中关闭循环。在C ++或Java中,花括号可用于定义for循环的主体,但我不确定它是如何在Python中完成的。有人可以帮忙吗?
答案 0 :(得分:1)
Python循环由dedenting关闭;左边的空白具有语义含义。这可以避免你疯狂地输入花括号或者/ od或者其他什么,并且可以消除一类错误,其中你的缩进意外地无法准确地反映你的控制流。
您的输入似乎不足以证明输出文件的循环(如果确实如此,我可能会使用gdbm表),所以您可以做这样的事情(非常简单地测试) :
#!/usr/local/cpython-3.3/bin/python
with open('/etc/crontab', 'r') as infile, open('output.txt', 'w') as outfile:
seen = set()
for line in infile:
for word in line.split():
if word not in seen:
seen.add(word)
outfile.write('{}\n'.format(word))