Pandas Read_CSV报价问题

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阅读专业知识!

Yar*_*ron 7

问题的根源在于 ' 被定义为引号和常规字符。

你可以逃避它,例如

'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)


jez*_*ael 5

我认为你需要str.stripapply:

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)