Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python从同一文本文件中分离不同的输入格式_Python_Input_Text - Fatal编程技术网

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

如何使用Python从同一文本文件中分离不同的输入格式,python,input,text,Python,Input,Text,我是编程和python新手,我正在寻找一种方法来区分同一输入文件文本文件中的两种输入格式。例如,假设我有一个像这样的输入文件,其中的值以逗号分隔: 五, 华盛顿,A,10 纽约,B,20 西雅图,C,30 波士顿,B,20 亚特兰大,哥伦比亚特区,50 2. 2005年5月5日,纽约 波士顿,10 其中格式为N,后跟N行数据1,M,后跟M行数据2。我尝试打开文件,逐行读取并将其存储到一个列表中,但我不确定如何为Data1和Data2生成两个列表,这样我将得到: 数据1=[华盛顿,A,10,纽约,

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

五, 华盛顿,A,10 纽约,B,20 西雅图,C,30 波士顿,B,20 亚特兰大,哥伦比亚特区,50 2. 2005年5月5日,纽约 波士顿,10

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

数据1=[华盛顿,A,10,纽约,B,20,西雅图,C,30,波士顿,B,20,亚特兰大,D,50] 数据2=[纽约,5号,波士顿,10号]


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

您的思路肯定是对的。 如果您想在这里保留原始列表,实际上不必删除整数i;你可以继续下一项

代码:


你肯定走对了路。 如果您想在这里保留原始列表,实际上不必删除整数i;你可以继续下一项

代码:


以下代码将生成一个与[Data1,Data2]相等的列表结果

代码假定指定的条目数正好是存在的数量。这意味着对于这样的文件,它将无法工作

二, 2005年5月5日,纽约 波士顿,10 西雅图,30

守则:

从文本文件中获取数据 打开'filename.txt','r'作为文件: lines=file.read.splitlines 结果=[] 索引=0 当索引以下代码将生成一个与[Data1,Data2]相等的列表结果

代码假定指定的条目数正好是存在的数量。这意味着对于这样的文件,它将无法工作

二, 2005年5月5日,纽约 波士顿,10 西雅图,30

守则:

从文本文件中获取数据 打开'filename.txt','r'作为文件: lines=file.read.splitlines 结果=[] 索引=0 当索引
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)
您可以使用和列表理解:

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)