簡體   English   中英

從列表中將數據提取到CSV文件中的多行(Python3)

[英]Extract data from a list to multiple rows in a CSV file (Python3)

我對python完全陌生(使用python 3.6)。 只是在將信息從Python列表中提取到csv文件時遇到麻煩。 我有以下包含108個字符串的列表:

lines = [('10-k','2','3','4','10-k','6','7','8','10-K','10','11',...,'108']

這樣每四個字符串就有一個“ 10-k”字。 我正在嘗試使用以下代碼在csv文件中提取此列表:

with open ('extracted.csv', 'w') as out_file:
wr = csv.writer(out_file)
wr.writerow(["file_form", "n1", "n2", "n3"])  # Headlines
wr.writerow(lines)

“ extracted.csv”文件生成兩行:a)帶有標題的頂部行(可以)和b)第二行,每個字符串在不同的列中(即第2行的列數與字符串數相同),即,共108列)。 我希望自己的extract.csv文件在每個“ 10-k”字符串處生成一個新行。 最后,將有27行x每行4列= 108個字符串。 我一直在嘗試從我的長字符串中生成27x4的矩陣(使用數組),但無法完全弄清楚。

謝謝你的時間!

如果可以保證數據是一致的(每4個元素始終出現10-k ),則可以遍歷lines並提取大小為4的塊。因此,這應該可以工作:

with open ('extracted.csv', 'w') as out_file:
    wr = csv.writer(out_file)
    wr.writerow(["file_form", "n1", "n2", "n3"])  # Headlines
    for i in range(0, len(lines), 4):
        wr.writerow(lines[i : i + 4])

您可以使用列表理解:

lines = [('10-k','2','3','4','10-k','6','7','8')][0]

rows = [lines[i:i+4] for i in range(0, len(lines), 4)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM