[英]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.