【问题标题】:Python: Munging data with '.join' (TypeError: sequence item 0: expected string, tuple found)Python:使用“.join”处理数据(类型错误:序列项 0:预期字符串,找到元组)
【发布时间】:2015-01-25 12:33:44
【问题描述】:

我有以下格式的数据:

[('A', 'B', 'C'),
 ('B', 'C', 'A'),
 ('C', 'B', 'B')]

我正在寻找这个:

ABC
BCA
CBB

我可以一次转换一个元组:

>> "".join(data[0])
.. 'ABC'

但是,当我尝试转换整个列表时,Python 给了我一个错误:

>> "".join(data[:])
.. TypeError: sequence item 0: expected string, tuple found

有什么建议可以转换整个列表吗?

谢谢!

【问题讨论】:

  • 顺便说一句,data[:]data 具有相同的效果

标签: python string tuples


【解决方案1】:

.join 需要一个字符串序列,但你给它的是一个元组序列。

要获得您发布的结果,您需要连接每个元组中的每个元素,然后将每个元组连接在一起:

print('\n'.join(''.join(elems) for elems in data))

这是可行的,因为.join 将接受生成器表达式,允许您迭代data(您的元组列表)。

因此,我们进行了两个连接:内连接构建三个字母的字符串(例如,'ABC'),外连接在它们之间放置换行符('\n')。

【讨论】:

  • 另一种可能错误地将.join 传递给元组序列的方法是意外写入''.join(elems) for elem in elems,elems 是拆分字符串的可迭代对象。这将产生此错误消息。
【解决方案2】:
lst=[('A', 'B', 'C'),
 ('B', 'C', 'A'),
 ('C', 'B', 'B')]

for x in lst:
    print ("".join(x))

输出是;

>>> 
ABC
BCA
CBB
>>> 

单线;

print ("\n".join(["".join(x) for x in lst]))

您必须先到达列表中的每个元素。

【讨论】:

    【解决方案3】:
    a = [('A', 'B', 'C'),  ('B', 'C', 'A'),  ('C', 'B', 'B')]
    print ["".join(line) for line in a]
    

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 2013-09-22
      • 1970-01-01
      • 2018-04-11
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      相关资源
      最近更新 更多