在python中读取.tsv文件时忽略字符串
我正在尝试读取.tsv文件,但是我注意到我的数据中有一个特定的字符串导致以下错误: ParserError:第112行预期有112个字段,saw 115 我跟踪了错误,发现在我的数据中有在python中读取.tsv文件时忽略字符串,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我正在尝试读取.tsv文件,但是我注意到我的数据中有一个特定的字符串导致以下错误: ParserError:第112行预期有112个字段,saw 115 我跟踪了错误,发现在我的数据中有“\\t”,当我尝试读取文件时,认为它被tab分隔 我尝试了以下方法,但没有成功: df = pd.read_csv('data.tsv.gz', header=None, sep='\t', quoting=csv.QUOTE_NONE, compression='gzip',
“\\t”
,当我尝试读取文件时,认为它被tab分隔
我尝试了以下方法,但没有成功:
df = pd.read_csv('data.tsv.gz', header=None, sep='\t',
quoting=csv.QUOTE_NONE, compression='gzip', engine='python',
encoding='iso8859_1')
我还尝试使用:sep='^\\t |\t'
示例数据:
There\tShould \\t Only\tbe\t6\tcolumns\t\t
数据帧中的输出应产生6列,其中包含字符串“\\t
”:
如果您没有空值,并且可以将其作为空值读取,则可以使用na values参数作为读取csv的一部分,并将该值指定为N/a。您可以将参数添加到
pd.read\u csv()
称为escapechar。将转义字符设置为“\”将解决您的问题。因此
df = pd.read_csv('data.tsv.gz', header=None, sep='\t', escapechar='\\',
quoting=csv.QUOTE_NONE, compression='gzip', engine='python',
encoding='iso8859_1')
正如您在更新的问题中所显示的那样,这是一个技巧。不幸的是,数据中存在空值。您也可以尝试设置false\u值,以便在读入时将该值设置为false。@JohanL提供了以下解决方案:escapechar='\\'
,它就像一个符咒一样工作。@Aslan:请更改(或删除)您接受的答案,因为它指向一个无效的解决方案。对于稍后讨论这个问题的人来说,这是令人困惑的。我添加了一个可用的参数作为参考。您是否尝试将escapechar='\\'
添加到pd.read\u csv()
参数列表中?我忽略了这么简单的解决方案!非常感谢你,约翰!
df = pd.read_csv('data.tsv.gz', header=None, sep='\t', escapechar='\\',
quoting=csv.QUOTE_NONE, compression='gzip', engine='python',
encoding='iso8859_1')