【问题标题】:remove first 3 columns from a .htb file从 .htb 文件中删除前 3 列
【发布时间】:2021-05-01 13:22:45
【问题描述】:

我有一个 .htb 文件,我想用 python 编辑它,以便稍后将值导入 MySQL 表。 MySQL 表将描述作为列名。

.htb 文件由 4 列组成,我想删除前 3 列(Description、Shortdescription、Unit),这样我就只剩下这些值了。 这是 .htb 文件的外观:

Description\tShortdescription\tUnit\tValue\n
\n
Hub\tHub\tmm\t68.000000000000\t\t\t\n           
Bohrung\tBohru\tmm\t89.000000000000\t\t\t\n
-----\n
Rechenbeginn\tKW_Start\t°KW\t-117.648988767436\t\t\t\n

为了能够将值导入 MySQL,我还必须删除:

  1. “-----”
  2. 列名和空行“Description\tShortdescription\tUnit\tValue\n \n"
  3. \t\t\t

我已经通过这样做来管理:

 with open("C:/Users/l-reh/Desktop/HTB_neu/Werte.htb", "r") as infile, \
 open("C:/Users/l-reh/Desktop/HTB_neu/Werte Aufbereitet.htb", "w", encoding="utf8") as outfile:
 data = infile.read():
 data = data.replace("Description   Shortdescription    Unit    Value\n", "")
 data = data.replace("\n", "")
 data = data.replace("-----", "")
 data = data.replace("\t\t\t", "\n")
 outfile.write(data)

我现在的问题是如何删除前 3 列?我的最终文件看起来最好的方式是:

68.000000000000\n
89.000000000000\n
-117.648988767436\n

【问题讨论】:

    标签: python multiple-columns


    【解决方案1】:

    您可以逐行处理文件并将处理后的数据附加到单个字符串中并将其写回文件。

    with open("C:/Users/l-reh/Desktop/HTB_neu/Werte.htb", "r") as infile, 
    open("C:/Users/l-reh/Desktop/HTB_neu/Werte Aufbereitet.htb", "w", encoding="utf8") as outfile:
        data = infile.read():
        data = data.replace("Description  Shortdescription    Unit    Value\n", "")
        data = data.replace("\n", "")
        data = data.replace("-----", "")
        data = data.replace("\t\t\t", "\n")
        final_data = ""
        for line in data.split("\n")[:-1]:
             final_data += line.split("\t")[3] // choosing 4th value
             final_data += "\n"
        outfile.write(final_data)
    

    【讨论】:

    • 您好,感谢您的帮助,我收到错误:list index out of range in line final_data += line.split("\t")[3]。我还没弄清楚为什么我会收到这个错误
    • 您的 .htb 文件是否总是包含第 4 列?
    • 这是最后一行不包含4列的问题,因为我们删除了\t\t\t并替换为\n文件末尾有一个空行。
    • 您可以将循环更新为 for line in data.split("\n")[:-1]
    • 我还有一个问题。如果我不想在最后一行出现 \n,我必须在代码中进行哪些更改?
    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多