使用python将多个csv文本文件中的数据读取到单个文本文件中

使用python将多个csv文本文件中的数据读取到单个文本文件中,python,csv,text-processing,Python,Csv,Text Processing,因此,我正在创建一个程序,它应该能够读取8个单独的文本文件,并将这些文件中的信息收集到单个文件中 第一个文件包含有关A删除的信息,如下所示: number;name;division. number;result. number;name;division;event1;event2...;event7. 其他文件包含以下单个体育赛事的结果: number;name;division. number;result. number;name;division;event1;event2.

因此,我正在创建一个程序,它应该能够读取8个单独的文本文件,并将这些文件中的信息收集到单个文件中

第一个文件包含有关A删除的信息,如下所示:

number;name;division.
number;result.
number;name;division;event1;event2...;event7.
其他文件包含以下单个体育赛事的结果:

number;name;division.
number;result.
number;name;division;event1;event2...;event7.
该程序应能够收集运动员的所有信息,并将其放入一个文件中,如下所示:

number;name;division.
number;result.
number;name;division;event1;event2...;event7.
该号码是删除参与者号码,所有其他信息都应链接到该号码

我真的很困惑是使用dict还是list或者两者都使用来处理和存储文本文件中的信息

这个程序比上面解释的要复杂得多,但我可以自己解决细节问题。允许的导入库还有数学、随机和时间。我知道这些都是相当模糊的说明,但就像我说的,我不需要一个完整的、功能性的程序,而是如何开始的指南。谢谢

有关如何逐行读取文件的信息,请咨询

with open(...) as f:
    for line in f:
        <do something with line>
然后,要从新文件中添加数据,请执行以下操作:

d['mynewkey']=d['mynewkey'] + (newval1, newval2, newval3)
记住,组成元组的是逗号,而不是括号

这应该让你开始了。

首先

打开csv文件进行写入,然后打开所有文本文件

为此,请使用python with语句。您可以在一行中轻松打开所有文本文件:

with open('result.csv', 'w') as csvfile:

    # write column headers
    csvfile.write('number;name;division;event1; ...') 

    with open('file1.txt', 'r') as f1, open('file2.txt' , 'r') as f2, open(...) as f:
        f1_line = f1.readline()
        f2_line = f2.readline()
        # rest of your login ....

        csvfile.write(';'.join(item for item in [number, name, division, event1, ...]) + '.\n')
打开所有文件时,逐行读取。从所有文件中收集行,从行中提取所需内容并将其写入csv文件:

另外,我不知道文件会有多少行,但将所有内容加载到内存列表或dict中是个不好的主意……

您可以使用带有删除数字的dict作为键来识别它们,并使用类以一种有意义且友好的方式存储所有其他信息。结果可以添加到运动员对象的列表中,运动员对象可以通过dict键的数字识别

示例input.csv:

示例输入\u events.csv:

代码:

结果:

Jordan - Basketball (1):
  Event 1 = 13.0
  Event 2 = 15.0
  Event 3 = 19.0

Michael - Soccer (2):
  Event 1 = 23.5
  Event 2 = 25.7
  Event 3 = 21.3
  Event 4 = 28.0

Ariell - Swimming (3):
  Event 1 = 174.5
  Event 2 = 159.9

只需通过一些文件写入操作来替换打印。

这是一个练习还是以后需要处理输出?听起来对数据进行非标准化是一个非常糟糕的主意,将不相关的内容放入一个没有层次结构或注释的文件中。我可以想出很多可能的解决办法,但这取决于你想要什么。。。您是否希望通过使用类等的“好”代码来实现您的目标。?或者只是一些工作,但需要阅读两次,以了解它的功能和方式?显示一个txt文件和预期输出的简短示例,文件的顺序可能决定它有多容易be@user3452623,存储到单个txt文件中,还是要将它们分组存储在一个dict中?我只是好奇为什么数学,允许随机和时间导入?逗号不构成元组,如果您写入t=1,2,3,则有一个元组,如果您有一个元素并使用t=3,则创建一个元组,t=3也构成一个元组。逗号只有在有一个元素时才有意义。如果3太神秘/通灵,也可以使用tuple3。如果您想以这种方式创建包含多个元素的元组,则需要额外的一对并列结构:tuple1,2,3。某种程度上一致的tuple3不起作用,因为在本例中,tuple将尝试循环遍历参数,这是一个不可iteranet的int,因此会引发类型错误。发问者表示,不能使用数学、时间和随机以外的模块。问题由autor在我写答案之后或期间编辑。。。。无需按下“向下”按钮…我不知道它是否会更改任何内容,但文件是.txt,而不是.csv,尽管它们的格式类似于csv文件。文件扩展名不重要,它将适用于任何格式如所述的文件:;作为分隔符。在行尾,\n作为新行字符。我创建了以下循环来处理所有包含结果的文件。对于results:with-opentie中的行,将=utf-8编码为f:results是文件名列表。现在我得到一个错误:number,result=line.strip\n.split;ValueError:需要解包的值太多2格式可能与您描述的不同,或者代码中的语义有问题。如果问题没有描述实际情况,请编辑。