将列表腌制为 UTF-8

pickle a list as UTF-8

我想将一个目录中的所有文件导入到我的 sql。但我必须首先对每个原始 .htb 文件进行相同的更改。原始文件的问题是

  1. 我不想导入列 headers 和第二行,因为它是空白的

  2. 我需要将 \t\t\t\n 更改为仅 \n 以便 MySQL 知道字段和行在哪里结束

  3. 我需要删除 -----\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),问题是您要求的结果在您的设计范围内实际上是不可能的。