如何避免在列表中添加不良字符(Python)?



我想弄清楚为什么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将返回许多其他字符作为字母,您可能不希望这样做。

最新更新