0

我正在尝试处理包含在单独文本文件中的列表。我能够读取文件,并生成包含文件内容的输出,但生成的输出是未处理的版本,与输入相同。当列表包含在我正在使用的模块中时,我没有遇到此问题 - 该过程成功运行。任何想法为什么使用输入文件会导致问题?

这成功运行(请注意 - 对于两次运行,“正确”是同一模块中的一个函数):

import sys
sys.stdout = open('out.txt','w')

def spelltest():
    for i in test:
        print correct(i)

test = ['acess','accesing','accomodation','acommodation','acomodation',
'acount','adress','adres','addresable','aranged','arrainged',
'arrangeing','aranging','arragment','articals',
'annt','anut','arnt','auxillary','avaible',
'awfall','afful','basicaly','begining',
'benifit','benifits','beetween',
'bicycal','bycicle','bycycle']

if __name__ == '__main__':
    print spelltest()

这不会:

import sys
sys.stdout = open(r'C:\Python26\out.txt','w')

infile = open('C:\\Python26\\text.txt','r')

def spelltest():
    for line in infile:
        print correct(line)

if __name__ == '__main__':
    print spelltest()

有什么想法可能是什么问题?

4

2 回答 2

0

一个区别是,在第二个示例中,line将保留文件中的换行符 ( \n)。第一个示例没有这些字符。

另外,我假设它text.txt的格式是每行一个字。

PS 要删除换行符(和其他空格):

def spelltest():
    for line in infile:
        print correct(line.strip())
于 2012-12-03T15:12:51.860 回答
0

鉴于您的文件格式,您可以在开头手动添加“words =”,例如:

words = ['acess', 'accesing', 'accomodation', 'acommodation', 'acomodation', 'acount', 'adress', 'adres', 'addresable', 'aranged', 'arrainged'] 

然后将其保存为 text.py 而不是 text.txt 。

之后,您可以使用以下命令在实际脚本中导入列表:

from text import words

并且不需要任何解析

于 2012-12-03T19:02:31.370 回答