将列表腌制为 UTF-8
pickle a list as UTF-8
我想将一个目录中的所有文件导入到我的 sql。但我必须首先对每个原始 .htb 文件进行相同的更改。原始文件的问题是
我不想导入列 headers 和第二行,因为它是空白的
我需要将 \t\t\t\n 更改为仅 \n 以便 MySQL 知道字段和行在哪里结束
我需要删除 -----\n 因为它只有 1 列与我的表格不匹配(4 列)
原始 .htb 文件如下所示:
Beschreibung\t Kurzbeschreibung\t Einheit\t 沃特\t\t\t\n
\n
Hub\t Hub\t mm\t 150.000000000000\t\t\t\n
Bohrung\t Bohru\t mm\t 135.000000000000\t\t\t\n
-----\n
到目前为止,我已经设法创建了所有文件的列表。我的下一步是将该列表写入 1 个文件,然后我可以对其进行编辑。我遇到的问题是,当我将列表保存为文件时出现格式问题。我希望最终文件具有 utf8 格式。
这就是我希望我的文件的样子:
Hub Hub mm 150.000000000000
Bohrung Bohru mm 135.000000000000
但我现在得到的是:
”ŒHub Hub mm 150.000000000000
”Œ%Bohrung Bohru mm 135.000000000000
这是我的代码:
import os
import pickle
folderpath = r"C:/Users/l-reh/Desktop/HTB"
filepaths = [os.path.join("C:/Users/l-reh/Desktop/HTB/", name) for name in os.listdir(folderpath)]
all_files = []
for path in filepaths:
with open(path, 'r') as f:
file = f.readlines()
all_files.append(file)
with open("C:/Users/l-reh/Desktop/Bachelorarbeit/DB Testdatensatz/HTB.htb", 'wb') as f:
pickle.dump(all_files, f)
pickle
生成二进制格式,其中包括每个字段“header”字节(描述类型、长度,对于某些 pickle 协议,还包括框架数据),这些看起来像垃圾文本如果您将输出视为文本。您不能说“我希望它是 pickle
,但没有这些字节”,因为这些字节是 pickle
序列化格式的一部分。如果您不想要这些字节,则需要选择不同的序列化格式(大概使用与此 HTB 格式匹配的自定义序列化程序)。这与 UTF-8 编码或缺少 UTF-8 编码无关(您的输入是 ASCII),问题是您要求的结果在您的设计范围内实际上是不可能的。
我想将一个目录中的所有文件导入到我的 sql。但我必须首先对每个原始 .htb 文件进行相同的更改。原始文件的问题是
我不想导入列 headers 和第二行,因为它是空白的
我需要将 \t\t\t\n 更改为仅 \n 以便 MySQL 知道字段和行在哪里结束
我需要删除 -----\n 因为它只有 1 列与我的表格不匹配(4 列) 原始 .htb 文件如下所示:
Beschreibung\t Kurzbeschreibung\t Einheit\t 沃特\t\t\t\n
\n
Hub\t Hub\t mm\t 150.000000000000\t\t\t\n
Bohrung\t Bohru\t mm\t 135.000000000000\t\t\t\n
-----\n
到目前为止,我已经设法创建了所有文件的列表。我的下一步是将该列表写入 1 个文件,然后我可以对其进行编辑。我遇到的问题是,当我将列表保存为文件时出现格式问题。我希望最终文件具有 utf8 格式。 这就是我希望我的文件的样子:
Hub Hub mm 150.000000000000
Bohrung Bohru mm 135.000000000000
但我现在得到的是:
”ŒHub Hub mm 150.000000000000
”Œ%Bohrung Bohru mm 135.000000000000
这是我的代码:
import os
import pickle
folderpath = r"C:/Users/l-reh/Desktop/HTB"
filepaths = [os.path.join("C:/Users/l-reh/Desktop/HTB/", name) for name in os.listdir(folderpath)]
all_files = []
for path in filepaths:
with open(path, 'r') as f:
file = f.readlines()
all_files.append(file)
with open("C:/Users/l-reh/Desktop/Bachelorarbeit/DB Testdatensatz/HTB.htb", 'wb') as f:
pickle.dump(all_files, f)
pickle
生成二进制格式,其中包括每个字段“header”字节(描述类型、长度,对于某些 pickle 协议,还包括框架数据),这些看起来像垃圾文本如果您将输出视为文本。您不能说“我希望它是 pickle
,但没有这些字节”,因为这些字节是 pickle
序列化格式的一部分。如果您不想要这些字节,则需要选择不同的序列化格式(大概使用与此 HTB 格式匹配的自定义序列化程序)。这与 UTF-8 编码或缺少 UTF-8 编码无关(您的输入是 ASCII),问题是您要求的结果在您的设计范围内实际上是不可能的。