python regex逗号分隔的3个字符的csv值

时间:2018-07-24 01:13:34

标签: python regex csv

我有一组3个小写的csv,我想在python中使用re.match函数来提取它们。我正在使用正则表达式来获取结果。 我的csv是' sdh , ash, vbn',我想通过跳过空格和逗号来捕获所有这些。但是,我没有得到正确的输出。结果是得到了这个列表:(',vbn',)。表达式是这样的:re.match('^[a-z]{3}((?:,?)[a-z]{3})*')

4 个答案:

答案 0 :(得分:0)

您可能只匹配3个被单词边界包围的字符:

csvText = ' sdh  , ash,  vbn'
matches = re.findall(r'\b\w{3}\b', csvText)

答案 1 :(得分:0)

inp = ' sdh  , ash,  vbn'
m = re.match('(\w+),(\w+),(\w+)', inp.replace(" ", ""))
if m:
    print(m.groups())

答案 2 :(得分:0)

此正则表达式将匹配除空格和逗号之外的所有字符:

import re

line = ' sdh  , ash,  vbn'    
print(re.findall(r'[^\s,]+', line))

打印:

['sdh', 'ash', 'vbn']

答案 3 :(得分:0)

如果您想使用match,则可以使用:

\s*([a-z]{3})\s*,\s*([a-z]{3}),\s*([a-z]{3})\s*

这将匹配零个或多个零倍的空白字符\s*,在第3组中捕获小写字符([a-z]{3}),然后捕获零个或多个零倍的空白字符\s*,并以逗号分隔前2套3个字符。对于最后一组,逗号末尾不匹配。

import re
match = re.match(r'\s*([a-z]{3})\s*,\s*([a-z]{3}),\s*([a-z]{3})\s*', ' sdh  , ash,  vbn')
if match:
    print(match.groups())

结果:

('sdh', 'ash', 'vbn')

Demo