python isdigit()函数为非数字字符u'\u2466&x27;
我在处理python isdigit函数时遇到了一个奇怪的问题 例如:python isdigit()函数为非数字字符u'\u2466&x27;,python,unicode,digit,Python,Unicode,Digit,我在处理python isdigit函数时遇到了一个奇怪的问题 例如: >>> a = u'\u2466' >>> a.isdigit() Out[1]: True >>> a.isnumeric() Out[2]: True 为什么这个字符是数字 有没有办法让这个报税表变成假的,谢谢 编辑,如果我不想把它当作一个数字,那么如何过滤掉它 例如,当我尝试将其转换为int时: >>> int(u'\u2466') 然后发生
>>> a = u'\u2466'
>>> a.isdigit()
Out[1]: True
>>> a.isnumeric()
Out[2]: True
为什么这个字符是数字
有没有办法让这个报税表变成假的,谢谢
编辑,如果我不想把它当作一个数字,那么如何过滤掉它 例如,当我尝试将其转换为int时:
>>> int(u'\u2466')
然后发生了Unicodeincoder错误。U+2466是(⑦), 是的,这是一个数字
如果您对数字的定义与的不同,则可能需要编写自己的isdigit()
方法
编辑,如果我不想把它当作一个数字,那么如何过滤掉它
如果您只对ASCII数字0
…9
感兴趣,可以执行以下操作:
In [4]: s = u'abc 12434 \u2466 5 def'
In [5]: u''.join(c for c in s if '0' <= c <= '9')
Out[5]: u'124345'
[4]中的s=u'abc 12434\u2466 5 def'
在[5]中:u''。连接(c表示s中的c,如果“0”字符是带圆圈的数字七,它是数字和数字
如果要将数字限制为通常的0-9,请使用正则表达式:
import re
def myIsDigit(s):
return re.search("[^0-9]", s) is None
如果要将某些内容转换为int
,您需要的是而不是isdigit
请注意,“十进制”不仅仅是0、1、2、…9,还有一些可以解释为十进制数字并转换为整数的数字。例如:
#coding=utf8
s = u"1٢٣٤5"
print s.isdecimal() # True
print int(s) # 12345
⑦ 是一个数字,至少Unicode consortium是这样认为的。如果您对“数字”有自己的理解,请随意分享。您希望将哪些值视为数字?如果您不同意isdigit
处理Unicode的方式,只想查找阿拉伯数字,那么最好在“0123456789”中使用If a
。或者只是字符串中的数字。