使用python-csv写入不同的列

  • 本文关键字:python-csv 使用 python csv
  • 更新时间 :
  • 英文 :


我正在制作一个脚本,将一堆txt文件组合成一个csv文件,但因为我使用的是csv包,所以我只能使用writerow而不能使用columns。现在,它只生成一个包含一列和一堆行的csv文件。

def l_r_file(dirstart):
print(os.listdir())
with open("config.csv", 'w', newline='')as f:
writer = csv.writer(f)
all_dir = os.listdir()
for x in all_dir[:-1]:
os.chdir(dirstart + '\' + x)
working_file = open('Config.txt', "r")
commaseperated = working_file.readlines()
for i in commaseperated:
writer.writerow([i])
os.chdir(dirstart)
working_file.close()

config.txt文件的设置方式是,它只是一列包含多行的文本。我正在尝试设置csv页面,以便比较不同的txt文件。举个例子来说,config.txt中的第一行说";Emily";,另一个配置文件的第一行说bob,我希望能够在csv文件中并排比较这两个或更多个。但我打开了txt文件中的字符串/将其保存到列表中。这是一个问题,因为通常csv文件想要在同一列表上的一行中,比如

rows = [ ['Nikhil', 'COE', '2', '9.0'],  
['Sanchit', 'COE', '2', '9.1'],  
['Aditya', 'IT', '2', '9.3'],  
['Sagar', 'SE', '1', '9.5'],  
['Prateek', 'MCE', '3', '7.8'],  
['Sahil', 'EP', '2', '9.1']]  

每个列表都会变成一行,但由于我的数据,我把它们放在像这样的列表中

List1 = ['emily', 'randy', 'tom']
List2 = ['bob', 'tom', 'astrid']

因为我正在读取每个txt文件并将其存储到一个列表中。以下是我的txt文件的样子。

emily
randy
tom
eric
lisa

我正在处理一堆txt文件,每个文件中也有一堆行。我觉得我想得太多了。如果我不清楚,请告诉我,谢谢!。此外,在熊猫身上可能有一种简单的方法可以做到这一点,但我正试图在没有熊猫的情况下做到这一步。

我试着把它们组合成一个2d列表,就像这个

combined_lst = [['emily', 'randy', 'tom'], ['bob', 'tom', 'astrid']]

并使用循环引用它们。然而,由于txt文件有不同的长度,例如,一个配置文件中的名称比另一个多,所以它不起作用。

读取整个文件并将其拆分为空白。这应该会生成一个包含每一行的列表。然后将整行写入csv。

....
for x in all_dir[:-1]:
os.chdir(dirstart + '\' + x)
with open('Config.txt', "r") as working_file:
data = working_file.read().split()
writer.writerow(data)
os.chdir(dirstart)

在您的原件中,splitlines()给了您一个包含每一行的列表。

In [63]: working_file.readlines()
Out[63]: ['emilyn', 'randyn', 'tomn', 'ericn', 'lisa']

所以你原来的可以这样改。

....
for x in all_dir[:-1]:
os.chdir(dirstart + '\' + x)
working_file = open('Config.txt', "r")
commaseperated = working_file.readlines()
#for i in commaseperated:
writer.writerow(commaseperated)
os.chdir(dirstart)
working_file.close()

请注意,splitlines()在每行末尾保留换行符。您可能不希望在您的csv文件中包含此信息。

最新更新