2016-06-02 1 views
3

인용 : 나는 pd.read_csv('input.csv',sep='|', quotechar="'"를 사용하려면팬더 Read_CSV 내가처럼 보이는 파일이 문제

'colA'|'colB' 
'word"A'|'A' 
'word'B'|'B' 

를) 그러나 나는 다음과 같은 출력을 얻을 :

colA colB 
word"A A 
wordB' B 

마지막 행은 정확하지 않습니다, 그것을 word'B B이어야합니다. 이 문제를 어떻게 해결할 수 있습니까? 다양한 반복을 시도했지만 두 행을 올바르게 읽지는 못했습니다. csv 독서 전문 지식이 필요합니다!

답변

1

문제의 원인은 '견적으로 정의되고 일반 문자로 정의됩니다.

예를 들어 탈출 할 수 있습니다.

'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 

은 또한 당신은 사용할 수 있습니다 인용 = csv.QUOTE_ALL -하지만 출력은 당신이 str.strip 필요하다고 생각 견적 문자를

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

포함됩니다 apply :

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