编辑如下
首先,我很确定这是一个重复的问题。但我不知道如何寻找它。我已经花了相当长的时间了。
我正在使用 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'], …)