我对 Python 很陌生。我正在尝试从以下格式的文本文件中提取数据:
85729 block 寻址索引近似文本检索
85730 基于分歧的自动查询扩展等等...
输出文本文件是单词列表,但没有重复条目。输入的文本文件可以有重复项。输出将如下所示:
阻止
寻址
索引
大约
等等......
到目前为止,通过我的代码,我可以获得单词列表,但包含重复项。在将单词输入到输出文件之前,我尝试检查重复项,但输出并未反射(reflect)这一点。有什么建议么?我的代码:
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中的for循环是如何关闭的。在 C++ 或 Java 中,大括号可用于定义 for 循环体,但我不确定它在 Python 中是如何完成的。有人可以帮忙吗?
Python 循环是通过缩进来封闭的;左边的空白具有语义意义。这可以让您免于疯狂地输入大括号或 do/od 或其他任何内容,并消除一类错误,即您的缩进意外地无法准确反射(reflect)您的控制流。
您的输入似乎不够大,不足以证明对输出文件进行循环(如果确实如此,我可能会使用 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))
我是一名优秀的程序员,十分优秀!