我有一个部分ID A00-A09
。任何类似A01
,A01.01
,A02
至A09.09
应该是 分类在此部分ID。我如何在Python中做到这一点?目前,我只能匹配具有确切字符的字符串。python中的部分字符串匹配
1
A
回答
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)
0
您可以使用[]
与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')
输出:
[]
0
可以使用startswith()
和endswith()
做部分匹配。在X12.Y34
假设全ID始终是 - 每一个部分是一个字母和两个数字,由.
或-
分离(或任何字符):
>>> 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如果输入有时会小写。
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
。
相关问题
- 1. 与Python部分字符串匹配
- 2. 字符串部分匹配
- 3. 字符串中的部分匹配[]
- 4. 在PHP中部分字符串匹配
- 5. 在excel中部分匹配字符串
- 6. 匹配字符串的部分
- 7. 查找匹配的部分字符串
- 8. 防止“if”python中的部分字符串匹配)
- 9. PHP中部分字符串匹配字符串
- 10. 按行部分字符串匹配
- 11. 部分字符串匹配算法
- 12. 与LINQ/C部分字符串匹配#
- 13. ndb查询部分字符串匹配
- 14. 部分匹配子字符串
- 15. MYSQL匹配部分字符串
- 16. 匹配固定字符串部分2
- 17. 部分字符串匹配问题
- 18. PHP部分字符串匹配
- 19. 部分字符串匹配mysql
- 20. 如何部分匹配字符串?
- 21. 部分字符串匹配在R
- 22. Java替换字符串的匹配部分中的字符
- 23. Python匹配字符串中的数字
- 24. 选择部分字符串匹配(全字匹配)
- 25. 提取部分匹配两个子字符串的字符串
- 26. 用粗体字符串替换部分匹配的字符串
- 27. 搜索匹配字符串的一部分,在使用Python
- 28. Python字符串匹配
- 29. python xlrd字符串匹配
- 30. 部分匹配字符串List.contains(字符串)
检查're'模块,正则表达式 – sshashank124
@ sshashank124你的意思是're'模块? –
是're'模块。 – Nilesh