【问题标题】:Python line.replace in a text file is adding unwanted blank lines文本文件中的 Python line.replace 正在添加不需要的空行
【发布时间】:2017-06-16 08:15:12
【问题描述】:

您好,我目前正在尝试编写一个简单的 python 代码来打开一个文本文件,匹配一个字符串,然后用用户输入替换它。我已经设法让它工作(我很肯定有一种更有效的方法),除非我将结果打印到文件中,它在每行之间添加一个空行。当我执行此过程两次时,它会添加两个空行。

import fileinput

text = fileinput.input(files=('default.txt'))
text2 = fileinput.input(files=("temp.txt"))
mp = str(raw_input("enter the first string: "))
pn = str(raw_input("enter the second string"))
fileN = mp + "_autogen_ST.txt"
f = open("temp.txt","w")
fi = open(fileN,"w")
#for line in text:
#   print >>f, (line.replace("*mp*", mp))
for line in text:
    print >> f, (line.replace("*pn*", pn))



for line in text2:
    print >> fi, (line.replace("*mp*", mp))

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您阅读的文本文件中没有多余的空行吗?
  • 我认为你从raw_inputs 得到的字符串末尾有一个\n,在替换之前尝试.split() 他们
  • 您好,它正在读取的文本文件没有任何额外的空白行,但是在打印后,它在每行之后添加了一个空白行。在故意更改字符串后也尝试运行它,因此找不到匹配项,并且它仍然添加空行,因此假设它不是由于原始输入

标签: python python-2.7 file-io newline


【解决方案1】:

您的问题是文件中的行已经有换行符,print 会自动添加换行符。最简单的解决方案是将print 替换为f.write,这是一种“原始”输出方法:

for line in text:
    f.write(line.replace("*pn*", pn))

for line in text2:
    fi.write(line.replace("*mp*", mp))

或者作为有趣的单线:

f.writelines(line.replace("*pn*", pn) for line in text)
fi.writelines(line.replace("*mp*", mp) for line in text2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多