我想弄清楚为什么isnumeric()
没有检测到像³
这样的坏字符,并把它算作一个数字。
我的代码块:
words = input().upper()
char = []
digit = []
for i in range(0, len(words)):
if words[i].isalpha():
char.append(words[i])
elif words[i].isnumeric():
digit.append(words[i])
我怎样才能避免这种情况?
这是因为str.is{numeric,alpha}()
检查字符类型是否为数字类型的UTF字符,这可能导致例如中文符号2被计数为数字。如果您只想检查ASCII数字,那么您可以使用自己的函数:
nums = '0123456789'
words = input().upper()
char = []
digit = []
for i in range(0, len(words)):
if words[i].isalpha():
char.append(words[i])
elif words[i] in nums:
digit.append(words[i])
还请注意,isalpha
将返回许多其他字符作为字母,您可能不希望这样做。