J'ai des chaînes multilingues composées des deux langues qui utilisent des espaces comme séparateur de mots (anglais, français, etc.) et des langues qui ne le sont pas (chinois, japonais, coréen). Je souhaite séparer la partie anglais/français/etc en mots utilisant un espace comme séparateur et séparer la partie chinoise/japonaise/coréenne en caractères individuels.Python: un moyen d'effectuer cette division "hybride"() sur des chaînes multilingues (par exemple chinois et anglais)?
Et je veux mettre de tous ces composants séparés dans une liste.
Quelques exemples seraient sans doute que cela soit clair:
Cas 1: chaîne en anglais seulement. Ce cas est facile:
>>> "I love Python".split()
['I', 'love', 'Python']
Cas n ° 2: chaîne chinoise seule:
>>> list(u"我爱蟒蛇")
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
Dans ce cas, je peux transformer la chaîne en une liste de caractères chinois. Mais, dans la liste que je reçois des représentations unicode:
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
Comment puis-je obtenir pour afficher les caractères réels au lieu de l'unicode? Quelque chose comme:
['我', '爱', '蟒', '蛇']
??
Cas n ° 3: Un mélange d'anglais & chinois:
Je veux transformer une chaîne d'entrée tels que
"我爱Python"
et il se transforme en une liste comme ceci:
['我', '爱', 'Python']
Est-il possible de faire quelque chose comme ça?
Malheureusement, il y a un disfonctionnement dans le courant de Python Module 're' qui empêche' re.split() 'de se séparer sur des correspondances de longueur nulle: http://stackoverflow.com/questions/2713060/why-doesnt-pythons-re-split-split-on-zero-length -matches - vous ne pouvez donc pas utiliser directement les expressions régulières dans Python. –
Le coréen utilise des espaces pour la séparation des mots. – Leovt