Converta acentos TeX em UTF-8 em Python

2

editar abaixo

Antes de mais nada, tenho certeza de que essa é uma pergunta duplicada. Mas não tenho ideia de como procurá-lo. Já passei bastante tempo.

Estou lendo com python de um arquivo .txt o caminho para um arquivo específico. ou seja,

/home/username/Documents/K\"{u}hnelt.pdf

Agora, se eu tentar copiá-lo para outro diretório usando shutil.copyfile() , ele diz que não pode encontrá-lo. No entanto, se eu escrever manualmente

/home/username/Documents/Kühnelt.pdf

funciona muito bem. Eu suponho que seja um problema de codificação, mas não sou fluente com essas coisas e não consigo descobrir.

Lamento se houver erros técnicos na pergunta a seguir, mas não sei como fazer isso corretamente. Eu espero que você possa entender isso corretamente. A questão é, existe algum comando em python que "interprete" a string como ela está escrita na linha de comando, e a converte em uma string de tipo "totalmente composta"?

Estou fazendo um script em python para copiar vários .pdf que tenho em meu computador para a pasta atual. Eu realmente li o local do pdf a partir de um arquivo .bib . É esse arquivo .bib que tem o local escrito em um formato TeX.

Agora, meu script python lê o arquivo .bib linha por linha e quando encontra

file = {:home/user/Documents/K\"{u}hnelt\_2003.pdf:pdf},

analisa para manter MyString = "home/user/Documents/K\"{u}hnelt\_2003.pdf"

então eu faço shutil.copyfile(MyString, "NewName.pdf" ) , que copia o arquivo no diretório atual. Ele funciona bem, exceto arquivos que contenham esse estilo TeX.

    
por manolius 26.04.2015 / 15:54

1 resposta

1

Considere afastar-se do BibTeX antiquado e não-Unicode para o moderno Biblatex , com o Biber com reconhecimento de Unicode.

Se isso não for uma opção, use a biblioteca Bibtexparser . Ele contém código para converter de notação TeX compatível com BibTeX para Unicode, com bibtexparser.customization.convert_to_unicode . Com base no exemplo dado na documentação:

import bibtexparser
with open(bibtex_file_name) as bibtex_file:
    parser = bibtexparser.bparser.BibTexParser()
    parser.customization = bibtexparser.customization.convert_to_unicode
    bibliography = bibtexparser.load(bibtex_file, parser=parser)
    for entry in bibliography.entries:
        if entry.has_key('file'):
            shutil.copy(entry['file'], …)
    
por 26.04.2015 / 21:57