我有一个部分ID A00-A09
。像A01
,A01.01
,A02
到A09.09
之类的任何内容都应如此
根据本节ID分类。我怎么能用Python做到这一点?目前我只能将字符串与确切字符匹配。
答案 0 :(得分:1)
您可以将[]
与re模块一起使用:
re.findall('A0[0-9].0[0-9]|A0[0-9]','A01')
输出:
['A01']
不发生:
re.findall('A0[0-9].0[0-9]|A0[0-9]','A11')
输出:
[]
答案 1 :(得分:1)
使用re.match()
进行检查。这是一个例子:
import re
section_id = "A01.09"
if re.match("^A0[0-9](\.0[0-9])?$", section_id):
print "yes"
此处正则表达式A0X
是强制性的,.0X
是可选的。 X
来自0-9
。
答案 2 :(得分:0)
剪切节ID并比较:
sid = "A00-A09"
def under_sid(ssid, sid):
sid_start, sid_end = sid.split("-")
return ssid[:3] >= sid_start and ssid[:3] <= sid_end
for i in ["A01", "A01.01", "A02", "A09.09"]:
assert under_sid(i, sid)
for i in ["B01", "A22.01", "A93", "A19.09"]:
assert not under_sid(i, sid)
答案 3 :(得分:0)
您可以使用startswith()
和endswith()
进行部分匹配。假设完整ID始终位于X12.Y34
中 - 每个部分都是一个字母和两个数字,以.
或-
(或任何字符)分隔:
>>> id = 'A03.A07'
>>> section_id = id[:3]
>>> section_id
'A03'
>>> id.startswith('A03')
True
>>> id.startswith('A07')
False # so won't match with the subsection.
>>> sub_section_id = id[-3:]
>>> sub_section_id
'A07'
如果输入有时可以是小写,则可以将其转换为uppercase。