我有
形式的数据CS989_-RED814298959
CS663_RED812657324
RED819238322_CS537
......
此数据位于csv文件中。我想检索以RED开头的所有子字符串。 请建议我使用python
中的正则表达式来实现此目的我尝试了以下代码:
import re
string="RED819238322_CS537"
substring=re.match("[a-zA-Z]*//([0-9]*)",string)
它返回无
答案 0 :(得分:2)
如果您不需要正则表达式,请不要使用正则表达式。
with open('myfile') as f:
print([l for l in f if l.startswith('RED')])
根据需要进行更改,即使用csv.reader
:
with open('myfile') as f:
print([row for row in csv.reader(f) if row[0].startswith('RED')])
答案 1 :(得分:0)
帮助模块中的函数匹配:
匹配(pattern,string,flags = 0) 尝试在字符串的开头应用模式,返回 匹配对象,如果未找到匹配则为None。
您需要re.search
或re.findall
。你的正则表达式也是不正确的 - 如果你想要的只是“红色”后跟任意数字的数字,它的拼写是r"RED[0-9]+"
>>> strings
['CS989_-RED814298959', 'CS663_RED812657324', 'RED819238322_CS537']
>>> re.match(r"(RED[0-9]+)", strings[0])
>>> re.findall(r"(RED[0-9]+)", strings[0])
['RED814298959']
>>> re.findall(r"(RED[0-9]+)", strings[1])
['RED812657324']
>>> re.findall(r"(RED[0-9]+)", strings[2])
['RED819238322']
>>> re.search(r"(RED[0-9]+)", strings[0])
<_sre.SRE_Match object at 0x1772e40>
答案 2 :(得分:0)
那里有什么斜杠?试试这个:
substring=re.match("[a-zA-Z]*([0-9]*)", string)