Can python's csv reader leave the quotes in?

后端 未结 2 1234
夕颜
夕颜 2021-01-18 02:16

I want to use the python CSV reader but I want to leave the quotes in. That is I want:

>>> s = \'\"simple|split\"|test\'
>>> reader = csv.         


        
2条回答
  •  栀梦
    栀梦 (楼主)
    2021-01-18 02:56

    I don't understand if you have a clear view of what you are trying to obtain.
    You say "I know (...) my use case is an abuse" .
    But abuse implies that exists the possibility of use.
    However, in you case, there is no possible use, what you "described" is impossible because what is passed to a CSV parser must be of a valid CSV format and yours isn't.

    In a CSV valid string, most of the characters are information and some characters are meta-information necessary to interpret the string to extract the information.
    What you describe is that you want that characters " should be in the information category and meta-information category altogether. It's like someone wanting to catch his/her left hand with one's left hand.....

    This problem is occurring with your string because it isn't a string coming from the reading of a CSV file. It's a string written as is.
    It's impossible to obtain a string like this from the reading of a CSV file, because it couldn't have been written like that in the CSV file.
    If written to a CSV file, '"simple|split"|test' could be written

    • """simple|split"""|test
      with doublequote set to True, the default

    • or #"simple#|split#"|test
      with doublequote = False, escapechar = '#'

    .

    If you want to extract the information like you described, you have not to create a parser, you have just to use an already existing tool:

    import re
    
    reg = re.compile('".*?"|[^|]+')
    
    print reg.findall('yoo|"simple|split"|test|end"pos|hu')
    

    result

    ['yoo', '"simple|split"', 'test', 'end"pos', 'hu']
    

提交回复
热议问题