Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- s1 = """ "foo","bar", "foo,bar" """
- List ["foo","bar","foo,bar"] length 3
- s2 = """ "foo","bar", 'foo,bar' """
- pattern = "(('[^']*')|([^,]+))"
- re.findall(pattern,s2)
- gives [('foo', '', 'foo'), ('bar', '', 'bar'), ("'foo,bar'", "'foo,bar'", '')]
- Edit
- The current pattern support strings like
- "foo,bar,foo bar" => [foo,bar,foo bar]
- "foo,bar,'foo bar'" => ["foo","bar",'foo bar']
- "foo,bar,'foo, bar'" => [foo,bar, 'foo, bar'] #length 3
- (?:"([^"]+)"|'([^']+)')
- (?:("[^"]+")|('[^']+')|(w+))
- >>> import shlex
- >>> lex = shlex.shlex(""" "foo","bar", 'foo,bar' """, posix=True)
- >>> lex.whitespace = ',' # Only comma will be a splitter
- >>> lex.whitespace_split=True # Split by any delimiter defined in whitespace
- >>> list(lex) # It is actually an generator
- ['foo', 'bar', 'foo,bar']
- >>> re.findall(r'["|'](.*?)["|']', s1)
- ['foo', 'bar', 'foo,bar']
- >>> re.findall(r'["|'](.*?)["|']', s2)
- ['foo', 'bar', 'foo,bar']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement