繁体   English   中英

如何使用Python从文本文件中删除回车符?

[英]How can I remove carriage return from a text file with Python?

我搜索过的东西没有用,所以我求助于专家!

我在制表符分隔的文本文件中有一些文本,其中包含某种回车符(当我在Notepad ++中打开它并使用“显示所有字符”时,在行尾看到[CR] [LF]) 。 我需要删除此回车符(或其他内容),但似乎无法弄清楚。 这是文本文件的片段,其中显示了带有回车符的行:

firstcolumn secondcolumn    third   fourth  fifth   sixth       seventh
moreoftheseventh        8th             9th 10th    11th    12th                    13th

这是我试图用来替换它的代码,但是找不到返回值:

with open(infile, "r") as f:
    for line in f:
        if "\n" in line:
            line = line.replace("\n", " ")

我的脚本只是找不到回车符。 我是对这个回车做错了什么还是做出了错误的假设? 我可以在文本编辑器中手动将其删除,但是文本文件中大约有5000条记录也可能包含此问题。

进一步的信息:这里的目标是从文本文件中选择两列,因此我分割了\\ t字符,并将这些值作为数组的一部分来引用。 它可以在没有返回值的任何行上工作,但是在有返回值的行上会失败,例如,因为这些行中没有元素9。

vals = line.split("\t")
print(vals[0] + " " + vals[9])

因此,对于上面的文本行,此代码失败,因为该特定数组中没有索引9。 对于没有[CR] [LF]的文本行,它可以按预期工作。

从技术上讲,有一个答案!

with open(filetoread, "rb") as inf:
    with open(filetowrite, "w") as fixed:
        for line in inf:
            fixed.write(line)

open(filetoread, "rb")的b显然以一种打开文件的方式,使我可以访问这些换行符并将其删除。 这个答案实际上来自站点之外的Stack Overflow用户Kenneth Reitz。

感谢大家!

根据文件类型(以及它来自的操作系统等),回车符可能是'\\r''\\n''\\r'\\n' 无论使用line.rstrip()方法,摆脱它们的最好方法是使用line.rstrip()

with open(infile, "r") as f:
    for line in f:
        line = line.rstrip() # strip out all tailing whitespace

如果您只想摆脱回车符,而不希望结尾有任何多余的空格,则可rstrip提供可选参数:

with open(infile, "r") as f:
    for line in f:
        line = line.rstrip('\r\n') # strip out all tailing whitespace

希望这可以帮助

Python以所谓的universal newline mode打开文件,因此换行始终为\\n

Python通常是通过通用换行符支持构建的。 提供“ U”会以文本文件的形式打开文件,但是行可能会被以下任一终止:Unix行尾约定“ \\ n”,Macintosh约定“ \\ r”或Windows约定“ \\” r \\ n'。 所有这些外部表示都被Python程序视为'\\ n'。

您逐行遍历文件。 您将在行中替换\\n 但是实际上没有\\n因为行已经被迭代器用\\n分隔并且每行都不包含\\n

您可以从文件f.read()读取。 然后替换其中的\\n

with open(infile, "r") as f:
    content = f.read()
    content = content.replace('\n', ' ')
    #do something with content

以下是在不使用临时文件的情况下删除回车的方法:

with open(file_name, 'r') as file:
    content = file.read()

with open(file_name, 'w', newline='\n') as file:
    file.write(content)

我已经创建了一个代码来做到这一点,它的工作原理是:

end1='C:\...\file1.txt'
end2='C:\...\file2.txt'
with open(end1, "rb") as inf:
     with open(end2, "w") as fixed:
        for line in inf:
            line = line.replace("\n", "")
            line = line.replace("\r", "")
            fixed.write(line)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM