我有一个包含以下内容的tsv文件:
'"1"\t"2"\t"3"\t"4"\n'
'"5"\t"6\n7"\t"8"\t"9"\n'
我希望能够忽略双引号内的\ n符号,但文件的readline()方法读取如下:
1 2 3 4
5 6
7 8 9
我想要的是:
1 2 3 4
5 6\n7 8 9
我尝试将其传递给换行参数:
f = open('file.tsv', newline = '"\n')
f = open('file.tsv', newline = '\"\n')
但是我得到了
ValueError: illegal newline value: "
答案 0 :(得分:3)
Readline方法不包括类似tsv的字符串,只是按原样读取内容。 Python提供了CSV包来读取这些文件:
import csv
with open('test.csv') as csvfile:
reader = csv.reader(csvfile, delimiter='\t', quotechar='"')
for row in reader:
print(', '.join(row))
了解更多此套餐in the docs。
BTW,你的newline参数技巧会引发错误,因为它可能是None
,''
,'\n'
,'\r'
和'\r\n'
。
请注意,换行仅适用于文字模式。
<强>更新强>:
请参阅下面的topicstarter数据示例:
from io import StringIO
file = StringIO("""'"1"\t"2"\t"3"\t"4"'
'"5"\t"6\n7"\t"8"\t"9"'""")
reader =csv.reader(file, delimiter='\t', quotechar='"')
for row in reader:
print(row)
输出:
['\'"1"', '2', '3', "4'"]
['\'"5"', '6\n7', '8', "9'"]
因此它按预期工作 - 当您打开文件时,无法正确执行拆分,csv.reader
使用文件对象,而不是使用行。