Heim > Fragen und Antworten > Hauptteil
这样算吗?121238asdf<img class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=da0493cd90ef76c6d0d2fb23ad14fdf6/e483aa4bd11373f0bddb2e73a40f4bfbf9ed04b1.jpg" width="560" height="420">
Die Zeichenfolge ist wie oben, der Typ ist „str“ und die chinesischen Zeichen müssen regelmäßig erhalten werden. Als ich zuvor [u4e00-u9fa5] verwendet habe, bekam ich immer noch eine Liste mit Symbolen und Zahlen auf Englisch. Bitte bringen Sie mir die richtige Haltung bei. Sag mir auch, wo ich einen Fehler gemacht habe...
pattern = re.compile(r'[\u4E00-\u9FA5]')
print pattern.findall(x[1])
Das habe ich geschrieben ... aber das zurückgegebene Ergebnis enthält keine chinesischen Schriftzeichen, sondern andere Schriftzeichen außer chinesischen Schriftzeichen.
習慣沉默2017-06-22 11:53:45
我这里假设你需要匹配的文本为s
:
pattern = re.compile(ur"[\u4e00-\u9fa5]")
print pattern.findall(s.decode('utf8'))
这里的decode('utf8')
是怕s的值为类似\x66\x77\x88
这样的Unicode散列。另外,需要注意compile()
中ur
修饰符,u
为Unicode修饰符。
PS:我是从这篇文章得到的启发。
刚才看了下楼下说的,确实用Python 3就不存在输出为Unicode散列的情况了,以下摘自此处
Unicode 字符串
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。
女神的闺蜜爱上我2017-06-22 11:53:45
你用的是python2,\uxxxx
是unicode字符,匹配后得到的是字节
串,print出来是各个字节值。
换python3
就没这个问题了