如何在Python中将复杂列表转换为字符串?

时间:2018-06-21 13:03:53

标签: python python-3.x

我有这个复杂的清单:

boundarylist = [('eː', 'n'), ('a', 'k'), ('a', 's')]

我想将boundarylist转换为字符串,以便将其存储在外部.txt文件中。

boundarystring = ' '.join(boundarylist)

不起作用。输出应该是这样的:

boundarystring = 'eːn ak as' #seperated by \s or \n

我尝试了“”.join(list) if list contains a nested list in python?中建议的这些算法,但是它分别返回'eːnakas'和'eːn a k a s':

import itertools
lst = [['a', 'b'], ['c', 'd']]
''.join(itertools.chain(*lst))
'abcd'

''.join(''.join(inner) for inner in outer)

4 个答案:

答案 0 :(得分:7)

您需要首先加入列表中的元组

chmod

答案 1 :(得分:2)

一种方法:

boundarylist = [('eː', 'n'), ('a', 'k'), ('a', 's')]

print(' '.join([x+y for x, y in boundarylist]))
# eːn ak as

答案 2 :(得分:-1)

这是我尝试过的方法,依次遍历列表和元组;

boundarylist = [('eː', 'n'), ('a', 'k'), ('a', 's')]
new_list = []
for tuple_ in boundarylist:
   for i in tuple_:
      new_list.append(i)
boundarylist = ' '.join(new_list)
print(boundarylist)

答案 3 :(得分:-1)

我们可以使用reduce方法。

boundarylist = [('eː', 'n'), ('a', 'k'), ('a', 's')]
print reduce(lambda x,y:"".join(x) + " " + "".join(y) , boundarylist)

输出

'eːn ak as'

这是如何工作的

在这里,我们实际上是使用.join()方法加入列表中的元组,然后使用reduce()函数接受两个参数并将它们与满足您的用例的空格字符连接