删除换行符时出错

2024-04-20 01:10:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试用python重写一个文本文件,在这里我进入一个文件, 抓取每一行,在该行上附加一个字符串,然后重写 在文本文件中新添加的行。我的问题是 新构造的文本文件格式不正确。文件包含 行,每行包含三个数字,用逗号分隔。如果我的文件 如下所示:

57.88, 58.45, 45.31
57.88, 58.45, 45.31
57.88, 58.45, 45.31

我想在行中添加字符“a”,然后我需要这个文件 看起来是这样的:

57.88, 58.45, 45.31, a
57.88, 58.45, 45.31, a
57.88, 58.45, 45.31, a

相反,文件格式如下(当我在emacs和gedit中打开它时)

57.88, 58.45, 45.31
,a
57.88, 58.45, 45.31
,a
57.88, 58.45, 45,31
,a

有趣的是,无论格式如何,行数仍然是相同的(3) 文件的一部分。我对此感到困惑和沮丧。下面是 我用来重写文件的代码。我的python技能真的是 需要,所以可能有一些明显的python函数需要我使用 没有听说过。基本上,一旦确定文件路径存在,我就调用 重写子程序,如下所示:

def getLines(filePath):
    move(filePath, filePath+"~")
    destination = open(filePath, "w")
    source = open(filePath+"~", "r")
    for line in source:
            destination.write(line.strip("\n") + ",a\n"))
    source.close()
    destination.close()

Tags: 文件字符串sourceclose格式line数字open
2条回答

如果您使用的是非Unix平台,则文件可能包含\r\n行终止符。尝试右剥离\r\n并附加",a\r\n"。你知道吗

destination.write(line.rstrip("\r\n") + ",a\r\n"))

即使文件只包含\n行结束符,这种方法仍然有效,因此非常健壮。你知道吗

您可以尝试不那么明确,让strip来完成跨平台解决方案的工作

...
for line in source:
    destination.write(line.strip() + ",a\n"))

或者试试这个

for line in source.readlines()
    destination.write(line + ",a\n"))

相关问题 更多 >