如何将数组集合写入 python 中的 csv 文件?
How do I write a collection of arrays to csv file in python?
我在 python 中有一个 Counter 系列,看起来像
C = [
('a', [10, 15]),
('b', [20, 23]),
('c', [11, 55])
...
]
我想将这个集合写入一个 csv 分隔文件,看起来像
letter property1 property2
a 10 15
b 20 23
c 11 55
我查看了堆栈溢出,大多数人都试图一次只将字典输出到 csv 一行。这可能不适用于我。我应该如何处理我的案例?
您可以创建一个新的列表列表,将列表的第二个元素连接到包含列表第一个元素的列表。然后你可以只使用 csv.writer
and writerows()
方法将这些列表写入文件。
import csv
D = [ [x[0]] + x[1] for x in C ]
with open(filename, 'w') as f:
writer = csv.writer(f)
writer.writerows(D)
行 D = [ [x[0]] + x[1] for x in C ]
可以用一些解释。
[x[0]]
将 C
的元素的第一个元素放入其自己的列表中,然后 + x[1]
获取列表的第二个元素并将其添加到列表的末尾我们刚刚创建。因此,对于示例中的第一个元素 ('a', [10, 15])
:[x[0]]
是包含字符串 'a'
或 ['a']
的列表。 x[1]
是列表 [10, 15]
。 +
运算符连接列表。因此,如果我们连接 ['a'] + [10, 15]
,我们会得到 ['a', 10, 15]
,它将按照您的要求写入 csv。
import re
c = [
('a', [10, 15]),
('b', [20, 23]),
('c', [11, 55])
]
regex = r"\('(\w)', \[(\d+), (\d+)\]\)"
for x in re.findall(regex ,str(c)):
print ','.join(x)
我在 python 中有一个 Counter 系列,看起来像
C = [
('a', [10, 15]),
('b', [20, 23]),
('c', [11, 55])
...
]
我想将这个集合写入一个 csv 分隔文件,看起来像
letter property1 property2
a 10 15
b 20 23
c 11 55
我查看了堆栈溢出,大多数人都试图一次只将字典输出到 csv 一行。这可能不适用于我。我应该如何处理我的案例?
您可以创建一个新的列表列表,将列表的第二个元素连接到包含列表第一个元素的列表。然后你可以只使用 csv.writer
and writerows()
方法将这些列表写入文件。
import csv
D = [ [x[0]] + x[1] for x in C ]
with open(filename, 'w') as f:
writer = csv.writer(f)
writer.writerows(D)
行 D = [ [x[0]] + x[1] for x in C ]
可以用一些解释。
[x[0]]
将 C
的元素的第一个元素放入其自己的列表中,然后 + x[1]
获取列表的第二个元素并将其添加到列表的末尾我们刚刚创建。因此,对于示例中的第一个元素 ('a', [10, 15])
:[x[0]]
是包含字符串 'a'
或 ['a']
的列表。 x[1]
是列表 [10, 15]
。 +
运算符连接列表。因此,如果我们连接 ['a'] + [10, 15]
,我们会得到 ['a', 10, 15]
,它将按照您的要求写入 csv。
import re
c = [
('a', [10, 15]),
('b', [20, 23]),
('c', [11, 55])
]
regex = r"\('(\w)', \[(\d+), (\d+)\]\)"
for x in re.findall(regex ,str(c)):
print ','.join(x)