我正在将一个由两个整数组成的字符串转换为元组。我需要确保我的字符串格式化为"<int1>,<int2>"
形式的逗号,并且没有多余的空格。
我知道isdigit()
可以用来检查给定的字符串是否只包含数字。但是,这并不能解决所需的逗号,也没有空格。
这是我将字符串转换为整数元组的代码:
s1 = "12,24"
string_li = s1.split(',')
num_li = [int(x) for x in string_li]
num_tuple = tuple(num_li)
有人建议在这里使用正则表达式。我如何将其实现为if / else语句?这是有效的,但似乎不正确:
import re
s1 = '12,24'
if re.match("^\d+,\d+$",s1) is not None:
print("pass")
你能指出我正确的方向吗?
答案 0 :(得分:1)
听起来像是正则表达式的工作。
import re
re.match("^\d+,\d+$", some_string)
^
匹配字符串\d+
匹配一个或多个数字,
匹配逗号文字$
匹配字符串结尾一些测试用例:
assert re.match("^\d+,\d+$", "123,123")
assert not re.match("^\d+,\d+$", "123,123 ") # trailing whitespace
assert not re.match("^\d+,\d+$", " 123,123") # leading whitespace
assert not re.match("^\d+,\d+$", "a,b") # not digits
assert not re.match("^\d+,\d+$", "-1,3") # minus sign is invalid
re.match
的返回值为MatchObject
或None
,幸运的是,它们在布尔上下文中的行为符合预期 - MatchObject
是真实的,None
是假的,可以看出是上面的断言。