gpt4 book ai didi

python - 如何使用Python从同一文本文件中分离不同的输入格式

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:24 25 4
gpt4 key购买 nike

我是编程和Python新手,我正在寻找一种方法来区分同一输入文件文本文件中的两种输入格式。例如,假设我有一个像这样的输入文件,其中值以逗号分隔:

5
Washington,A,10
New York,B,20
Seattle,C,30
Boston,B,20
Atlanta,D,50
2
New York,5
Boston,10

其中格式为 N 后跟 N 行 Data1,以及 M 后跟 M 行 Data1数据2。我尝试打开该文件,逐行读取它并将其存储到一个列表中,但我不确定如何为 Data1 和 Data2 生成 2 个列表,这样我会得到:

Data1 = ["Washington,A,10", "New York,B,20", "Seattle,C,30", "Boston,B,20", "Atlanta,D,50"]
Data2 = ["New York,5", "Boston,10"]

我最初的想法是迭代列表,直到找到一个整数 i,从列表中删除该整数并继续下一个 i 迭代,同时存储后续值放在单独的列表中,直到找到下一个整数,然后重复。然而,这会破坏我最初的 list 。有没有更好的方法来分离不同列表中的两种数据格式?

最佳答案

您可以使用itertools.islice和列表理解:

from itertools import islice

string = """
5
Washington,A,10
New York,B,20
Seattle,C,30
Boston,B,20
Atlanta,D,50
2
New York,5
Boston,10
"""

result = [[x for x in islice(parts, idx + 1, idx + 1 + int(line))]
for parts in [string.split("\n")]
for idx, line in enumerate(parts)
if line.isdigit()]

print(result)

这会产生

[['Washington,A,10', 'New York,B,20', 'Seattle,C,30', 'Boston,B,20', 'Atlanta,D,50'], ['New York,5', 'Boston,10']]

对于文件,您需要将其更改为:

with open("testfile.txt", "r") as f:
result = [[x for x in islice(parts, idx + 1, idx + 1 + int(line))]
for parts in [f.read().split("\n")]
for idx, line in enumerate(parts)
if line.isdigit()]

print(result)

关于python - 如何使用Python从同一文本文件中分离不同的输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com