我有一個部分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. Python的 - 遍歷字符串和組部分匹配字符串
- 4. 字符串中的部分匹配[]
- 5. 在PHP中部分字符串匹配
- 6. R中部分字符串匹配
- 7. 在excel中部分匹配字符串
- 8. 兩個大字符串中的部分字符串匹配
- 9. 合併部分匹配的字符串
- 10. 匹配字符串的部分
- 11. 查找匹配的部分字符串
- 12. 防止「if」python中的部分字符串匹配)
- 13. PHP中部分字符串匹配字符串
- 14. 在Python中列表交集和部分字符串匹配
- 15. 部分匹配子字符串
- 16. 與LINQ/C部分字符串匹配#
- 17. ndb查詢部分字符串匹配
- 18. PHP部分字符串匹配
- 19. 部分字符串匹配在R
- 20. MYSQL匹配部分字符串
- 21. R - 部分匹配字符串
- 22. 命令行匹配部分字符串
- 23. 部分字符串匹配轉換表
- 24. 匹配固定字符串部分2
- 25. 部分字符串匹配算法
- 26. 按行部分字符串匹配
- 27. 部分字符串匹配mysql
- 28. 部分字符串匹配問題
- 29. 從字符串SQL LIKE部分匹配
- 30. Firebase查詢部分字符串匹配
檢查're'模塊,正則表達式 – sshashank124
@ sshashank124你的意思是're'模塊? –
是're'模塊。 – Nilesh