我有一些用户推特的csv数据。
在excel中,它显示如下:
‰ÛÏIt felt like they were my friends and I was living the story with them‰Û #retired #IAN1
我已将此csv文件导入到python中,在python中,同样的推文显示如下(我使用putty连接到服务器,我从putty的屏幕复制了这个)
▒▒▒It felt like they were my friends and I was living the story with them▒ #retired #IAN1
我想知道如何正确显示这些表情符号字符。我试图将这条推文中的所有单词分开,但我不确定如何将这些表情符号unicode字符分开。
答案 0 :(得分:2)
事实上,你肯定会丢失数据......
我不知道你是如何从用户的推文中获取你的CSV文件的(你可以解释一下)。但通常情况下,CSV文件在" cp1252"中是encoded。 (或" windows-1252"),有时在" iso-8859-1"编码。如今,我们可以找到以" utf-8"。
编码的CSV文件如果你的推文是用" cp1252"或者任何8位单字节编码字符集,Emojis丢失(替换为"?")或转换不良。
然后,如果您将CSV文件打开到Excel中,它将使用它的默认编码(" cp1252")并加载包含损坏字符的文件。您可以尝试使用Libre Office,它有一个对话框,可让您更轻松地选择编码。
Putty的复制/粘贴也会根据您的控制台编码转换您的角色......这是最糟糕的!
如果您的CSV文件使用" utf-8"编码(或" utf-16"," utf-32")您可能有更多机会保留Emojis。但仍然存在一个问题:大多数Emojis的代码点大于U + FFFF(十进制65535)。例如,Grinning Face""有代码点U + 1F600)。
这种字符在Python中处理不当,试试这个:
# coding: utf8
from __future__ import unicode_literals
emoji = u""
print(u"emoji: " + emoji)
print(u"repr: " + repr(emoji))
print(u"len: {}".format(len(emoji)))
你会得到(如果你的控制台允许):
emoji:
repr: u'\U0001f600'
len: 2
\U
转义序列与\u
类似,但需要8个十六进制数字,而不是4位。编辑:使用Python 3,您将获得:
emoji:
repr: ''
len: 1
repr()
没有转义序列,您可以做的是将您的CSV文件(片段)作为附件发布,然后可以分析它......
另请参阅Python 2.7文档中的Unicode Literals in Python Source Code。
答案 1 :(得分:0)
首先,由于格式差异以及剪贴板的不可靠性,您不应该使用从控制台复制的文本(尽管是从远程连接中复制)。我建议您导出CSV并直接阅读。
我不太确定你要做什么,但是由于它们基本上是压缩图像,因此无法在控制台中显示twitter表情符号。你介意进一步解释你的问题吗?
我个人会将整个字符串视为Unicode,将列表中的每个字符分开,然后根据空格重建字词。