我要附加两个具有不同结构的元组列表。第一个attribute
是一个列表o元组,每个元组中的每个值都作为字符串,并且在值后始终带有逗号,例如
[('id',), ('attr_1',), ('attr_2',), ...]
第二个value
是一个元组列表,其中所有与属性匹配的值都在一个元组中,并用字符串和数字填充,例如
[(111, 222, 333), ('aaa', 'bbb', 'ccc'), ('a1', 'b2', 'c3'), ...]
我想绑定两个对象,从而得到这样的文件输出
id; attr_1; attr_2; ...
111; aaa; a1; ...
222; bbb; b2; ...
333; ccc; c3; ...
我到目前为止尝试过
attr = (list(sum(attribute, ())) )
attri = ";".join(attr)
在attribute
列表上工作正常,但在value
上则无效。有任何想法吗?谢谢
答案 0 :(得分:3)
使用zip
:
test_tup = [(111, 222, 333), ('aaa', 'bbb', 'ccc'), ('a1', 'b2', 'c3')]
print(list(zip(*test_tup)))
输出:
[(111, 'aaa', 'a1'), (222, 'bbb', 'b2'), (333, 'ccc', 'c3')]
要将它们一起写成;
:
print('; '.join(' '.join(str(x) for x in i) for i in headers))
print('\n'.join('; '.join(str(x) for x in i) for i in res))
输出:
id; attr_1; attr_2
111; aaa; a1
222; bbb; b2
333; ccc; c3
答案 1 :(得分:1)
如果要将想要的输出写入csv文件,请尝试以下操作:
import pandas as pd
a = [('id',), ('attr_1',), ('attr_2',), ...]
b = [(111, 222, 333), ('aaa', 'bbb', 'ccc'), ('a1', 'b2', 'c3'), ...]
df = pd.DataFrame({a[i][0] : b[i] for i in range(len(a))}) # length of a and each item inside b must be same
df.to_csv(file_name, sep=';')
答案 2 :(得分:1)
您可以做类似的事情,
Oracle-XML-Functions
答案 3 :(得分:1)
您不能.join
int
个,应该先将它们转换为str
,然后再使用zip
:
values = [(111, 222, 333), ('aaa', 'bbb', 'ccc'), ('a1', 'b2', 'c3')]
values = [tuple(str(j) for j in i) for i in values]
out = ['; '.join(i) for i in zip(*values)]
print(out) #['111; aaa; a1', '222; bbb; b2', '333; ccc; c3']
如果希望单个out = '\n'.join(out)
,则可以在out = ['; '.join(i) for i in zip(*values)]
之后添加str
行。
答案 4 :(得分:0)
您也可以在第二个列表上进行联接,但是您需要在列表的每个元素上进行联接。 F.ex按列表补充:
value_list = [ ";".join(i) for i in value]