我在unicode中有一些字符串文本,包含一些数字如下:
txt = '36fsdfdsf14'
但是,int(txt[:2])
无法将字符识别为数字。如何更改字符以将其识别为数字?
答案 0 :(得分:2)
如果您实际拥有Unicode(或将您的字节字符串解码为Unicode),那么您可以使用规范替换来规范化数据:
>>> s = u'36fsdfdsf14'
>>> s
u'\uff13\uff16fsdfdsf\uff11\uff14'
>>> import unicodedata as ud
>>> ud.normalize('NFKC',s)
u'36fsdfdsf14'
如果规范规范化对您来说变化太大,您可以创建一个只包含所需替换项的转换表:
#coding:utf8
repl = u'0123456789'
# Fullwidth digits are U+FF10 to U+FF19.
# This makes a lookup table from Unicode ordinal to the ASCII character equivalent.
xlat = dict(zip(range(0xff10,0xff1a),repl))
s = u'36fsdfdsf14'
print(s.translate(xlat))
输出:
36fsdfdsf14
答案 1 :(得分:0)
在python 3上
[int(x) for x in re.findall(r'\d+', '36fsdfdsf14')]
# [36, 14]
在python 2上
[int(x) for x in re.findall(r'\d+', u'36fsdfdsf14', re.U)]
# [36, 14]
关于python 2示例,请注意' u'在字符串前面和re.U
标志。您可以将问题中现有的str
类型变量(例如txt
)转换为unicode txt.decode('utf8')
。