python - Comment régulariser tous les caractères chinois dans une chaîne
欧阳克
欧阳克 2017-06-22 11:51:45
0
2
1037
这样算吗?121238asdf<img class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=da0493cd90ef76c6d0d2fb23ad14fdf6/e483aa4bd11373f0bddb2e73a40f4bfbf9ed04b1.jpg" width="560" height="420">

La chaîne est comme ci-dessus, le type est 'str', et les caractères chinois doivent être obtenus par régularité. Lorsque j'utilisais [u4e00-u9fa5] auparavant, j'avais toujours une liste de symboles et de chiffres en anglais. S'il vous plaît, apprenez-moi la bonne posture. Aussi, dites-moi où j'ai fait une erreur...

pattern = re.compile(r'[\u4E00-\u9FA5]')
print pattern.findall(x[1])

C'est ce que j'ai écrit... mais le résultat renvoyé ne contient pas de caractères chinois, mais d'autres caractères à l'exception des caractères chinois.

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

répondre à tous(2)
習慣沉默

Je suppose ici que le texte que vous devez faire correspondre est s : 

pattern = re.compile(ur"[\u4e00-\u9fa5]")
print pattern.findall(s.decode('utf8'))

Le decode('utf8')是怕s的值为类似x66x77x88这样的Unicode散列。另外,需要注意compile()ur修饰符,u ici est le modificateur Unicode.

PS : je me suis inspiré de cet article.

Mise à jour

Je viens de lire ce qui a été dit en bas. Il est vrai qu'avec Python 3, la sortie est un hachage Unicode. Ce qui suit est extrait d'ici

.

Chaîne Unicode

Dans Python2, les chaînes ordinaires sont stockées sous forme de codes ASCII 8 bits, tandis que les chaînes Unicode sont stockées sous forme de chaînes Unicode 16 bits, qui peuvent représenter davantage de jeux de caractères. La syntaxe utilisée consiste à préfixer la chaîne avec u.

En Python3, toutes les chaînes sont des chaînes Unicode.

女神的闺蜜爱上我

Vous utilisez python2, uxxxx是unicode字符,匹配后得到的是字节String, ce qui est imprimé est la valeur de chaque octet.

Changez pour python3 et ce problème disparaîtra

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal