【问题标题】:Converting a unicode list into list of string in python在python中将unicode列表转换为字符串列表
【发布时间】:2014-12-24 07:26:34
【问题描述】:

我有这个 Unicode 列表

list = [u'Hello\n', u'23456\n', u'45678\n',u'85963\n'].

我希望它转换成如下的字符串列表

list1 = ['Hello','23456','45678','85963']

使用最少的代码。

【问题讨论】:

  • 不要使用python关键字作为变量名。

标签: python string unicode


【解决方案1】:

您可以在列表理解中使用str() 和strip():

>>> my_list = [u'Hello\n', u'23456\n', u'45678\n',u'85963\n']
>>> my_list = [str(i).strip() for i in my_list]
['Hello', '23456', '45678', '85963']

注意:不要使用python内置函数作为变量名!


或者您可以使用将您的 unicode 编码为 ascii by encode('ascii','ignore') :

>>> [i.encode('ascii','ignore').strip() for i in my_list]
['Hello', '23456', '45678', '85963']

【讨论】:

  • 我也会将它的地图版本加入其中。 map(lambda x: str(x).strip(), my_list)
  • @limelights 你可以使用它,但它的性能不如列表理解。
  • 当然,创建 lambdas 总是需要时间。 :)
  • @limelights lambda 的原因之一是地图的性能低于列表理解!
  • 这取决于您使用地图的目的。在某些情况下,地图会更快。
【解决方案2】:

只需使用内置的str() 转换string 中的所有数组元素 然后使用str.strip() 删除空格。

In [5]: list(str(i).strip() for i in _list)
Out[5]: ['Hello', '23456', '45678', '85963']

【讨论】:

    【解决方案3】:

    首先,您不应该使用list 作为变量名。它是 Python 中的保留关键字。 来到你真正的问题,得到你想要的最好和最pythonic的方法是:

    xlist = [x.encode().rstrip('\n') for x in list]
    
    print xlist
    ['Hello', '23456', '45678', '85963']
    

    要了解更多信息,请参阅str.encode() 和string.rstrip() 方法。

    【讨论】:

      【解决方案4】:

      怎么样,

      for i in list: out.append(str(i)[0:-1])

      【讨论】:

        猜你喜欢
        • 2012-03-22
        • 2015-09-18
        • 2014-09-30
        • 2013-08-11
        • 2014-06-29
        • 1970-01-01
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        相关资源
        最近更新 更多