【问题标题】:Pandas Read_CSV quotes issuePandas Read_CSV 报价问题
【发布时间】:2016-10-02 01:39:22
【问题描述】:

我有一个看起来像这样的文件:

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

【问题讨论】:

    标签: python csv pandas dataframe quoting


    【解决方案1】:

    我认为你需要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
    

    【讨论】:

      【解决方案2】:

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

      你可以逃避它,例如

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

      然后使用转义符:

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

      【讨论】:

        猜你喜欢
        • 2015-02-17
        • 2017-07-16
        • 2020-02-02
        • 2020-04-03
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多