A. *_*eel 5 python csv quoting dataframe pandas
我有一个看起来像这样的文件:
'colA'|'colB'
'word"A'|'A'
'word'B'|'B'
Run Code Online (Sandbox Code Playgroud)
我想使用pd.read_csv('input.csv',sep='|', quotechar="'")但我得到以下输出:
colA colB
word"A A
wordB' B
Run Code Online (Sandbox Code Playgroud)
最后一行不正确,应该是word'B B.我该如何解决这个问题?我尝试了各种迭代,但没有一个字能正确读取两行.我需要一些csv阅读专业知识!
问题的根源在于 ' 被定义为引号和常规字符。
你可以逃避它,例如
'colA'|'colB'
'word"A'|'A'
'word/'B'|'B'
Run Code Online (Sandbox Code Playgroud)
然后使用转义字符:
>>> pd.read_csv('input.csv',sep='|',quotechar="'",escapechar="/")
colA colB
0 word"A A
1 word'B B
Run Code Online (Sandbox Code Playgroud)
您也可以使用: 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'
>>>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7813 次 |
| 最近记录: |