在 Python 中将 TeX 重音转换为 UTF-8

在 Python 中将 TeX 重音转换为 UTF-8

编辑如下

首先,我很确定这是一个重复的问题。但我不知道如何寻找它。我已经花了相当长的时间了。

我正在使用 python 从 .txt 文件读取特定文件的路径。 IE

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

现在,如果我尝试使用将其复制到另一个目录中shutil.copyfile(),它会说找不到它。但是,如果我手动编写

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

它工作得很好。我认为这是一个编码问题,但我对这些事情不太熟悉,而且我无法弄清楚。

如果以下问题存在技术错误,我很抱歉,但我不知道如何正确解决。希望您能正确理解。问题是,python中是否有任何命令可以“解释”命令行中写入的字符串,并将其转换为“完全组合”类型的字符串?

我正在用 python 编写一个脚本,将计算机中的几个 .pdf 文件复制到当前文件夹中。我实际上从文件中读取了 pdf 位置.bib。该.bib文件的位置以 TeX 格式编写。

现在,我的 python 脚本逐行读取 .bib 文件,当它找到时

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

它解析它以保留MyString = "home/user/Documents/K\"{u}hnelt\_2003.pdf"

然后我将shutil.copyfile(MyString, "NewName.pdf" )文件复制到当前目录中。它工作正常,但包含此 TeX 样式的文件除外。

答案1

考虑从过时的、不支持 Unicode 的 BibTeX 转向现代的比布拉泰克斯,与支持 Unicode 的 Biber。

如果这不是一个选项,请使用书目解析器图书馆。它包含从 BibTeX 兼容的 TeX 表示法转换为 Unicode 的代码,其中bibtexparser.customization.convert_to_unicode。基于文档中给出的示例:

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'], …)

相关内容