我有表格的数据
CS989_-RED814298959
CS663_RED812657324
RED819238322_CS537
......
此数据在 csv 文件中。我想检索所有以 RED 开头的子字符串。请建议我在python中使用正则表达式来做到这一点
我尝试了以下代码:
import re
string="RED819238322_CS537"
substring=re.match("[a-zA-Z]*//([0-9]*)",string)
它返回无
我有表格的数据
CS989_-RED814298959
CS663_RED812657324
RED819238322_CS537
......
此数据在 csv 文件中。我想检索所有以 RED 开头的子字符串。请建议我在python中使用正则表达式来做到这一点
我尝试了以下代码:
import re
string="RED819238322_CS537"
substring=re.match("[a-zA-Z]*//([0-9]*)",string)
它返回无
如果您不需要正则表达式,请不要使用正则表达式。
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')])
关于模块 re 中功能匹配的帮助:
match(pattern, string, flags=0) 尝试在 string 的开头应用模式,返回一个匹配对象,如果没有找到匹配项,则返回 None。
你想要re.search
或re.findall
相反。您的正则表达式也不正确-如果您想要的只是“RED”后跟任意数量的数字,则拼写为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>
那些斜线在里面做什么?试试这个:
substring=re.match("[a-zA-Z]*([0-9]*)", string)