我有一个看起来像的文件:
'colA'|'colB'
'word"A'|'A'
'word'B'|'B'
我想使用pd.read_csv('input.csv',sep='|', quotechar="'"
),但我得到以下输出:
colA colB
word"A A
wordB' B
最后一行不正确,应为word'B B
。我该如何解决这个问题?我尝试了各种迭代,但没有一个字能正确读取两行。我需要一些csv阅读专业知识!
答案 0 :(得分:5)
import pandas as pd
import io
temp=u"""'colA'|'colB'
'word"A'|'A'
'word'B'|'B'"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep='|')
df = df.apply(lambda x: x.str.strip("'"))
df.columns = df.columns.str.strip("'")
print (df)
colA colB
0 word"A A
1 word'B B
答案 1 :(得分:4)
问题的根源是'被定义为引用,并作为常规字符。
你可以逃脱它,例如
'colA'|'colB'
'word"A'|'A'
'word/'B'|'B'
然后使用escapechar:
>>> pd.read_csv('input.csv',sep='|',quotechar="'",escapechar="/")
colA colB
0 word"A A
1 word'B B
您也可以使用:quoting = csv.QUOTE_ALL - 但输出将包含引号字符
>>> import pandas as pd
>>> import csv
>>> pd.read_csv('input.csv',sep='|',quoting=csv.QUOTE_ALL)
'colA' 'colB'
0 'word"A' 'A'
1 'word'B' 'B'
>>>