【问题标题】:Display list elements as if they were typed in显示列表元素,就好像它们是输入的一样
【发布时间】:2020-05-13 07:38:02
【问题描述】:

代码如下:

test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]
print(', '.join(test))

上面写着:

TypeError:序列项 1:预期的 str 实例,找到 int

有没有不看元素类型就可以加入的方法?

', '.join(str(v) for v in test)

不是一个好的解决方案。它打印:

26, 1, 050120, 084900, 21747, 1200.0, X, X, 18034775, 5TDDK3DC4BS029227, , None

我想保留元素类型并按原样打印出来:

'26', 1, '050120', '084922', u'43034775', u'RRR', '', None

【问题讨论】:

  • @ngShravil.py,我重新创建了这个问题。
  • 如果你连接东西,你需要它们是相同的类型,所以 str
  • @hansolo,怎么样?可以举个例子吗?
  • @timgeb,python 2
  • print("1") 的结果与print(1) 相同。

标签: python string python-2.x


【解决方案1】:

您可以使用 repr 内置函数。

print(', '.join(map(repr, test)))

这会产生所需的输出,因为

对于许多类型,此函数会尝试返回一个字符串,该字符串在传递给 eval() 时会产生具有相同值的对象

例子:

>>> str(1)
'1'
>>> str('1')
'1'
>>> repr(1)
'1'
>>> repr('1')
"'1'"

【讨论】:

    【解决方案2】:

    如果只是为了打印目的:

    test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]
    
    print(str(test)[1:-1])
    

    【讨论】:

      【解决方案3】:

      到您的预期输出'26', 1, '050120', '084922', u'43034775', u'RRR', '', None。使用列表的格式并删除括号

      test = ['26', 1, '050120', '084922', u'43034775', u'RRR', '', None]
      print(str(test).strip("[]")) # '26', 1, '050120', '084922', '43034775', 'RRR', '', None
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-23
        • 2019-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多