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