Comment gérer les caractères accentués en python?


Zeno Dalla Valle

Je sais qu'il y a beaucoup de matériel à ce sujet, mais je ne peux pas trouver de solution à mon problème.

J'ai ce texte écrit dans un fichier txt que je dois manipuler, etc. et il contient beaucoup de caractères accentués. Je ne peux pas les gérer correctement pour une raison quelconque. Voici mon code:

file = open ('parsed.txt', 'w', encoding = 'latin1')
file.write('ààààà')

Cela fonctionne très bien.

Mais je dois aussi que cela fonctionne bien:

with open('input.txt', 'r', encoding = 'latin1') as f:
    string = f.read()
    or_array = string.splitlines()
    new_array = []
    for line in or_array:
        new = (line[13:]).strip()
        print(new)
        new_array.append(new)
    new_string = ''
    for lin in new_array:
        new_string += lin
        new_string += ' '
    f_n = open('parsed.txt', 'w', encoding = 'latin1')
    f_n.write(new_string)

quel est le problème avec ce code?

contribution:

00:00:06.49    ciaò
00:00:20.665     Questa è una provà
00:00:44.157     èè   aa ò à ùù ù
00:00:44.157       

production:

ciaò Questa è una provàèè   aa ò à ùù ù  

production

Je vous remercie.

Kurtis Rader

Fonctionne pour moi si le contenu de input.txt est réellement dans ISO-8859-1. Si c'est en UTF-8, vous obtenez les résultats incorrects que vous voyez. En d'autres termes, lorsque je copie / colle votre entrée, j'obtiens un fichier dont le contenu est UTF-8. Si je le fais, iconv -f utf-8 -t L1 < utf8.txt > input.txtvotre programme fonctionne bien.

Au fait, votre programme n'est pas idiomatique en python et va être très inefficace sur de grandes entrées.

Articles connexes


Comparer les chaînes en ignorant les caractères accentués

alexandre1985: Je voudrais savoir s'il existe une méthode qui compare 2 chaînes et ignore les accents faisant de "noção" égal à "nocao". ce serait quelque chose comme string1.methodCompareIgnoreAccent (string2); Kennedy Oliveira: Vous pouvez utiliser java Coll

Convertir les caractères accentués en anglais en utilisant Java

sTg: J'ai une exigence où je dois rechercher avec des caractères accentués qui peuvent être pour les utilisateurs de Icelandet Japan. Le code que j'ai écrit fonctionne pour quelques caractères accentués mais pas tous. Exemple ci-dessous - À - returns a. Correc

tesseract - comment gérer les séparateurs de caractères

jackluo923 Comment gérer la reconnaissance du texte à l'intérieur des séparateurs de caractères avec tesseract (pré-traitement ou via une configuration tesseract spéciale) de manière appropriée, en particulier le type en peigne (3e image), comme dans ces trois

Comment diviser une chaîne avec des caractères accentués en rubis

Kevin Berthier Actuellement j'ai: "mɑ̃ʒe".split('') # => ["m", "ɑ", "̃", "ʒ", "e"] Je voudrais obtenir ce résultat "mɑ̃ʒe".split('') # => ["m", "ã", "ʒ", "e"] Todd A. Jacobs Utilisez plutôt String # each_grapheme_cluster . Par exemple: "mɑ̃ʒe".each_grapheme_

Comment convertir des caractères accentués en Java

Filomena Del Sorbo J'utilise Java 1.5 et j'ai besoin de normaliser une chaîne (comme ceci àèìòù---> aeiou). Je ne peux pas utiliser Normalizer car c'est pour> 1.6 Des idées? J'ai essayé ceci: public String normalizeText(String text) { text = normalizer(tex

Comment gérer les exceptions en python?

el323 elem = browser.find_element_by_xpath(".//label[@class = 'checkbox' and contains(.,'Últimos 15 días')]/input") if ( elem.is_selected() ): print "already selected" else: elem.click() Dans mon code, elem.click()obtient donne parfois une erreur. Si

Regex interdit les caractères accentués

NoDachi Je souhaite que l'utilisateur ne puisse saisir que des caractères anglais, le code ci-dessous fonctionne mais sur un mac si vous maintenez la lettre "a" par exemple, vous pouvez insérer des caractères accentués tels que "á". J'ai essayé quelques approc

comment gérer les caractères dupliqués dans regex

catominor J'utilise cette expression régulière pour trouver TOUTES les occurrences suivantes dans un tableau : /^.*(?=.*T)(?=.*O)(?=.*T)(?=.*A).*$/ ça correspond pOTATO mATTO cATeTO mais aussi lATO minAreTO AnTicO bien que ces trois derniers mots n'aient qu'