我对Python(以及编程)还很陌生。我写了一个简短的程序,可以将一个专用文件夹的文件名读入字符串。在此之后,我将“提取”文件名中的信息(例如文档编号、标题等->;在示例中稍后称为value1、value 2等)。
之后,我将值存储到列表中。每个文件(通过循环生成)一个列表,如下所示: ['value1','value 2','value3']
使用“打印”功能,我可以按需显示列表:
[‘value1‘, ‘value 2‘, 'value3'] (# generated from file 1)
[‘value1‘, ‘value 2‘, 'value3'] (# generated from file 2)
[‘value1‘, ‘value 2‘, 'value3'] (# generated from file 3)
[‘value1‘, ‘value 2‘, 'value3'] (# generated from file 4)
[‘value1‘, ‘value 2‘, 'value3'] (# generated from file 5)
现在我要将列表存储到csv.file中,如下所示:
value1, value2, value3, (# generated from file 1)
value1, value2, value3, (# generated from file 2)
value1, value2, value3, (# generated from file 3)
value1, value2, value3, (# generated from file 4)
value1, value2, value3, (# generated from file 5)
我在网上搜寻可能的解决办法。我试过几件事,但只得到最后一个生成的列表。
我试过的一次:
import os
import csv
def go():
folder = folderentry.get() # reads path for 'folder'
for path, subdirs, files in os.walk(folder):
for name in files:
searchValue1 = name.find("value1")
if searchValue1 >= 0:
parameter1 = "value 1"
else:
parameter = "NOT FOUND!"
searchValue2 = name.find("value2")
if searchValue1 >= 0:
parameter2 = "value 2"
else:
parameter = "NOT FOUND!"
searchValue3 = name.find("value3")
if searchValue3 >= 0:
parameter3 = "value 3"
else:
parameter = "NOT FOUND!"
list2 = []
list2.append(parameter1)
list2.append(parameter2)
list2.append(parameter3)
print(list2) # delivers the lists lik I want them
# generate csv.file:
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
list3 = zip(list2)
writer.writerows(list3)
(list2是定义列表的变量) 有了这个密码我得到:
value1
value2
value3
...
我想需要一个循环,但我无法理解。
您可以构造一个列表列表,然后将其传递给
csv.writer.writerows()
。每个嵌套列表都对应于从每个文件名中提取的值;针对这样的数据结构:可以使用
csv.writer,writerows(data)
将data
直接写入CSV文件。这里有一些代码可以满足您的需要:这段代码建立一个列表列表(
data
),然后在一个操作中将其写入CSV文件。上面代码的一个改进是使用列表理解为每个文件名创建值列表,并将其直接附加到data
列表中。这样效率更高,使用的代码也更少,但也许第一个示例对您来说更容易理解:问题在于台词-
首先,
list2
是一个一维字符串列表(根据您创建的内容)。当直接在这样的列表上使用zip()
时,您会得到一个元组列表,每个元组都有每个元素。示例-你不需要这么做。其次,使用^{} 之后,将} 。示例-
list3
中的每个元组写入一行,将每个元组视为一行。你想在这里使用^{相关问题 更多 >
编程相关推荐