假设我想在python 3中使用两个字符串(例如“ A1”或“ 1A”)进行操作,但首先检查它是否采用两种格式,因为用户可以用两种方式键入它。(我已经有了一种检查字符是否为字母的方法。)
我将如何以最短,最简单的方式实现这一目标?我想尝试一件事,如果失败,请在引发异常之前尝试另一件事。像这样:
x = 0
string = 'A1'
try:
x = int(string[1]) # Check that second char is a digit
# something else to check first char is a letter
else try:
x = int(string[0]) # Check that first char is a digit
# something else to check second char is a letter
except:
print('Was in neither form')
您可以使用循环:
for i in range(1, -1, -1):
try:
string[i] = int(string[i])
except ValueError:
pass
else:
break
else:
print('Was in neither form')
如果任何一个转换成功,则使用中断循环break
。如果您不使用break
,则会执行循环else
上的套件for
。
但是,不能将它们分配给字符串索引,因为它们是不可变的。更好的选择是使用正则表达式:
import re
valid_pattern = re.compile('^(?:\d[A-Z]|[A-Z]\d)$')
def is_valid(string):
return valid_pattern.match(string) is not None
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句