【发布时间】:2013-07-13 13:01:28
【问题描述】:
我用谷歌搜索的东西没有用,所以我求助于专家!
我在一个制表符分隔的文本文件中有一些文本,其中包含某种回车符(当我在 Notepad++ 中打开它并使用“显示所有字符”时,我在末尾看到 [CR][LF]线)。我需要删除这个回车(或任何它),但我似乎无法弄清楚。这是文本文件的 sn-p 显示一行带有回车符:
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] 的文本行,它按预期工作。
【问题讨论】:
-
尝试搜索“\r\n”,这是 windows 的回车符。
-
你把这些行写回文件吗?
-
搜索 \r\n 失败。
-
不,我不需要写回这些行。我只需要更改我使用它们的脚本中的值。
-
为什么需要删除 EOL 字符?您是想将文件转换为 unix EOL 样式,还是只是想将数据连接在一起?如果是前者,你应该用
f = open(filename,"w", newline="\n")打开,然后马上写回来。