所以我试着让我的脚本检查以确保用户输入的格式正确。例如,我试图让用户输入一个看起来像这样的字符串:
0B / 4B / 07
我想确保脚本知道字符串看起来应该与具有不同数字和字母的字符串完全相同,但是总共8个字符,而且正好在那些位置。我知道应该有一种方法可以用re模块做到这一点,但我似乎无法弄明白。有什么建议吗?
答案 0 :(得分:1)
import re
def check(word):
pattern = "^[0-9A-Z]{2,2}/[0-9A-Z]{2,2}/[0-9A-Z]{2,2}$"
m = re.search(pattern,word)
if m:
print("true")
else :
print("false")
#############################
> check('0B/4B/07') o/p true
>check('0B/4B/075') o/p false
您可以使用正则表达式
或if len(x) == 8 and x[2] == '//' and x[5] == '//'
@Tim Castelijns建议
答案 1 :(得分:0)
以下内容将测试用户输入是否与re.search
格式匹配,然后使用re.findall
将每个匹配的元组分配给变量matches
。 [A-Za-z0-9]
匹配任何字母数字字符,而{2}
表示应该有前两个字符的两个匹配项。此外,在()
中包装字符表示您要在re.findall
中返回它们。
import re
text = "0B/4B/07"
def get_input(text):
if re.search("[A-Za-z0-9]{2}/[A-Za-z0-9]{2}/[A-Za-z0-9]{2}", text):
matches = re.findall(
"([A-Za-z0-9]{2})/([A-Za-z0-9]{2})/([A-Za-z0-9]{2})",
text
)[0]
return matches
else:
return None
用法:
>>> text = "0B/4B/07"
>>> get_input(text)
('0B', '4B', '07')