如何使用 Python 使用管道分隔符拆分文本文件,然后根据条件选择列?

How to split text file with Pipe delimiter using Python and then pick columns based on condition?

尝试拆分文本并根据第 2 列选择数据:

Attribute1|Number|7
Attribute2|Text||"sample text"
Attribute3|Columns|4||"data1"|"data2"|"data3"|"data4"

如果它显示 Number 那么它应该在第三个字段中选择数据。 如果它显示 Text,它应该在第四个字段中选择数据。 如果它说 Columns 那么它必须根据第三个字段制作一些列。

最终数据应该在这样的数据框中:

         Col_1          Col_2
    Attribute1_value    7
    Attribute2_value    "sample text"
    Attribute3_value_0  data1
    Attribute3_value_1  data2
    Attribute3_value_2  data3
    Attribute3_value_3  data4

您可以将拆分的行存储在字典中并从中创建一个系列:

output_dict = {}
with open("file.txt", "r") as f:
    while True:
        line = f.readline()
        if not line:
            break
        fields = line.strip("\n").split('|')
        if fields[1] == "Number":
            output_dict[fields[0]] = fields[2]
        elif fields[1] == "Text":
            output_dict[fields[0]] = fields[3]
        elif fields[1] == "Columns":
            output_dict[fields[0]] = fields[4:4 + int(fields[2])]

#print(output_dict)

series = pd.Series(output_dict)
print(series.explode())

输出:

Attribute1                7
Attribute2    "sample text"
Attribute3          "data1"
Attribute3          "data2"
Attribute3          "data3"
Attribute3          "data4"