如何使用 Python 使用管道分隔符拆分文本文件,然后根据条件选择列?
Posted
技术标签:
【中文标题】如何使用 Python 使用管道分隔符拆分文本文件,然后根据条件选择列?【英文标题】:How to split text file with Pipe delimiter using Python and then pick columns based on condition? 【发布时间】:2021-12-31 22:53:05 【问题描述】:尝试拆分文本并根据第二列选择数据:
Attribute1|Number|7
Attribute2|Text||"sample text"
Attribute3|Columns|4||"data1"|"data2"|"data3"|"data4"
如果它显示数字,那么它应该在第三个字段中选择数据。 如果它显示文本,那么它应该在第四个字段中选择数据。 如果它说 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
【问题讨论】:
您目前如何尝试拆分文本? 输入数据具有连续的文本行并根据条件拆分?@DarkKnight @DarkKnight 根据管道分隔符拆分 【参考方案1】:您可以将拆分的行存储在字典中并从中制作一个系列:
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"
【讨论】:
以上是关于如何使用 Python 使用管道分隔符拆分文本文件,然后根据条件选择列?的主要内容,如果未能解决你的问题,请参考以下文章
如何阅读管道分隔线 |来自一个文件并在两个不同的 ArrayList 中拆分整数