将带有u'...'的字符串列表转换为普通字符串列表

时间:2016-01-25 06:24:58

标签: python nlp nltk wordnet

我是python中的新手。并为一个非常基本的问题道歉。

我正在使用python pattern.en库并尝试获取单词的同义词。这是我的代码,工作正常。

from pattern.en import wordnet
a=wordnet.synsets('human')
print a[0].synonyms

这是我得到的输出:

[u'homo', u'man', u'human being', u'human']

但是对于我的程序,我需要插入这个数组:

['homo', 'man', 'human being', 'human']

如何获得上述输出并从输出中删除“u”。

提前谢谢..!

2 个答案:

答案 0 :(得分:3)

尝试正确encoding - 但请注意 u对数据没有任何影响 - 它只是unicode对象(非字节数组)的显式表示,如果您的代码需要返回unicode,然后更好地为其提供unicode。

>>>d =  [u'homo', u'man', u'human being', u'human']
>>>print [i.encode('utf-8') for i in d]
>>>['homo', 'man', 'human being', 'human']

答案 1 :(得分:1)

简而言之:

无需将您的unicodes列表转换为字符串。他们是一回事

长期:

字符串对象中的u'...'前缀表示Python 2.0中引入的Unicode对象,请参阅https://docs.python.org/2/tutorial/introduction.html#unicode-strings

  

从Python 2.0开始,用于存储文本数据的新数据类型是   程序员可以使用:Unicode对象。它可以用来   存储和操作Unicode数据(参见http://www.unicode.org/)和   与现有的字符串对象很好地集成,提供   必要时自动转换。

从Python 3.0开始,请参阅https://docs.python.org/3.2/tutorial/introduction.html#about-unicode

  

从Python 3.0开始,所有字符串都支持Unicode(参见   http://www.unicode.org/)。

无论什么是默认字符串类型,在检查等价时,它们在Python 2.x和3.x中都应该相同:

alvas@ubi:~$ python2
Python 2.7.11 (default, Dec 15 2015, 16:46:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> type(u'man')
<type 'unicode'>
>>> type('man')
<type 'str'>
>>> u'man' == 'man'
True

alvas@ubi:~$ python3
Python 3.4.1 (default, Jun  4 2014, 11:27:44) 
[GCC 4.8.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> type(u'man')
<class 'str'>
>>> type('man')
<class 'str'>
>>> u'man' == 'man'
True

在Python 2中,当您必须或需要从unicode转换为str类型时,请说出类型检查或其他内容,例如:

alvas@ubi:~$ python3
>>> u'man' == 'man'
True
>>> type(u'man') == type('man')
True
>>> exit()
alvas@ubi:~$ python2
>>> u'man' == 'man'
True
>>> type(u'man') == type('man')
False

然后您应该只需将其投放到str(u'man')u'man'.encode('utf-8')

但是如果您的unicode字符串超出ascii范围并且您正在尝试将其写入文件或将其打印到控制台上(可能没有将defaultencoding设置为'utf-8),则可能存在一些“痛苦”/无休止的错误”。在这种情况下,请注意https://www.youtube.com/watch?v=sgHbC6udIqc

此外,以下是与u'...'前缀相关的类似问题: