Python:读取文件 - 修改行 - 写入输出

时间:2012-08-16 11:10:04

标签: python-2.7

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

这是我正在使用的代码:

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文件中的术语是这些:     第1学期     第2学期     第3学期     第4条

输出是这样的:

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

如何在前两个字母和字词中添加''?为什么第二个,第三个和第四个术语有,te而不是te喜欢它?

1 个答案:

答案 0 :(得分:3)

您可以使用新变量:

,而不是使用collectornewFile()
modified_line = "'%s'=>'%s',"  % (line[:2], line.strip())

并在你的循环中试试这个:

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

此外:

  • 如果可能,请不要在程序中硬编码文件名,使用sys.argv,标准输入/输出或配置文件;当然,如果你确定输入/输出名称然后使用它们
  • line[0:2]中,您可以省略0并使用行[:2]
  • 您应该使用try: - 打开文件 - 读取文件等。finally:关闭文件
  • 您不需要检查len(line) == 0for是否已经循环执行此操作,并且您将收到CRLF为空行的行,但输入文件的结尾是for循环时端