0

我有一个文件中的术语列表,我想阅读、修改每个术语并将新术语输出到新文件。新术语应如下所示:将原始术语的前两个字符放在引号中,添加“=>”,然后将原始术语放在引号和逗号中。

这是我正在使用的代码:

def newFile(newItem):
    original = line
    first = line[0:2]
    newItem = first+'=>'+original+',' 
    return newItem
input = open('/Users/george/Desktop/input.txt', 'r')
output = open('/Users/george/Desktop/output.txt', 'w')
collector = ''
for line in input: 
   if len(line) != 0:
       collector = newFile(input)
       output.write(''.join(collector))
   if len(line) == 0:
       input.close()
output.close() 

例如:如果 input.txt 文件中的术语是: term 1 term 2 term 3 term 4

输出是这样的:

te=>term 1
,te=>term 2
,te=>term 3
,te=>term 4    
,

如何添加''前两个字母和术语?而为什么第二、三、四项都,te不像te它应该的样子?

4

1 回答 1

3

而不是使用collectorandnewFile()你可以使用新变量:

modified_line = "'%s'=>'%s',"  % (line[:2], line.strip())

在你的循环中试试这个:

...
if len(line) > 2:
    output.write('%s\n' % (modified_line))

还:

  • 如果可能,不要在程序中硬编码文件名,使用sys.argv标准输入/输出或配置文件;当然,如果您确定输入/输出名称,请使用它们
  • line[0:2]你可以省略 0 并使用 line[:2]
  • 你应该使用try:- 打开文件 - 读取文件等finally:关闭文件
  • 你不需要检查 if len(line) == 0for循环已经做了,你会收到带有 CRLF 的空行,但是输入文件的结尾是for循环结束的时候
于 2012-08-16T11:21:34.207 回答