簡體   English   中英

Python正則表達式逗號分隔值csv的3個字符

[英]python regex comma separated value csv of 3 characters

我有一組3個小寫的csv,我想在python中使用re.match函數來提取它們。 我正在使用正則表達式來獲取結果。 我的csv是' sdh , ash, vbn'我想通過跳過空格和逗號來捕獲所有這些。 但是,我沒有得到正確的輸出。 結果是得到了這個列表:(',vbn',)。 表達式是這樣的: re.match('^[az]{3}((?:,?)[az]{3})*')

您可能只匹配3個被單詞邊界包圍的字符:

csvText = ' sdh  , ash,  vbn'
matches = re.findall(r'\b\w{3}\b', csvText)
inp = ' sdh  , ash,  vbn'
m = re.match('(\w+),(\w+),(\w+)', inp.replace(" ", ""))
if m:
    print(m.groups())

此正則表達式將匹配除空格和逗號之外的所有字符:

import re

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

印刷品:

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

如果要使用match ,則可以使用:

\\s*([az]{3})\\s*,\\s*([az]{3}),\\s*([az]{3})\\s*

這將匹配零次或多次空白字符\\s* ,以3組小寫字符([az]{3})捕獲,然后零次或更多次將空白字符\\s*和逗號分隔為前兩組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')

演示版

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM