Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 由于编码问题,难以处理tweepy脚本中的表情符号_Python_Unicode_Utf 8_Python 2.x_Tweepy - Fatal编程技术网

Python 由于编码问题,难以处理tweepy脚本中的表情符号

Python 由于编码问题,难以处理tweepy脚本中的表情符号,python,unicode,utf-8,python-2.x,tweepy,Python,Unicode,Utf 8,Python 2.x,Tweepy,这简直要了我的命,我真的很挣扎。。。但是我有一个与Python相关的utf-8问题 从本质上说,我试图将csv文件中的内容拉到推特上。有时,这涉及到从表情符号栏中进行选择,因此: t4 = function(random_line_from_csv_column_with_emoji) tweet = t1.decode('utf-8') + " " + t2.decode('utf-8') + " " + t3.decode('utf-8') + " " + t4.decode('utf-8

这简直要了我的命,我真的很挣扎。。。但是我有一个与Python相关的utf-8问题

从本质上说,我试图将csv文件中的内容拉到推特上。有时,这涉及到从表情符号栏中进行选择,因此:

t4 = function(random_line_from_csv_column_with_emoji)

tweet = t1.decode('utf-8') + " " + t2.decode('utf-8') + " " + t3.decode('utf-8') + " " + t4.decode('utf-8')

return tweet
然后,另一个文件使用tweepy streaming api使用上述代码从模块中提取tweet,并进行状态更新,例如

chatResponse = get_the_tweet_above(options)
replyText = '@' + screenName + ' ' + chatResponse
twitterApi.update_status(status=replyText)
大多数时候,我的代码都能正常工作。。。但有时由于编码问题而失败,例如:

'ascii' codec can't encode character u'\U0001f63a' in position 0: ordinal not in range(128)
'ascii' codec can't encode character u'\U0001f943' in position 0: ordinal not in range(128)
那些是表情符号,微笑的猫脸和一些叮当作响的玻璃杯或玻璃杯之类的东西

基本上,我现在正在拼命想办法阻止这一切的发生。我总是在Python中遇到编码问题,从来没有想过要解决这个问题


如果有人能用一些简单快捷的答案来完成这项工作,我会非常高兴

twitterApi.update\u status
需要Unicode文本字符串还是UTF-8字节?您可能会发现这篇文章很有帮助:,它是由经验丰富的Ned Batchelder编写的。字符串也可以。(我想)我需要知道的是如何正确使用.encode/.decode/等将表情符号从csv提取到变量。我假设您的csv文件是用UTF-8编码的。我假设“字符串很好”意味着
twitterApi.update\u status
可以接受
status
arg的Unicode字符串。因此,以二进制模式打开CSV,读取数据,将其从UTF-8解码为Unicode,从该Unicode中获取所需的内容,并将其连接到所需的
状态
字符串中。注意不要将UTF-8字节与Unicode字符串连接,否则Python 2将“有益地”将UTF-8视为ASCII,并尝试将其转换为Unicode;如果UTF-8包含任何非ASCII字节,该过程将失败。因此,这很奇怪,但我发现当我手动运行脚本时,该脚本可以工作,但当我通过cronjob运行脚本时,由于编码原因,该脚本会失败。删除打印推文的行后,它现在可以手动工作,也可以在cronjob上工作。。。但这很奇怪。。。当在cronjob上运行时,在具有相同python容量的同一服务器上运行的脚本怎么会无法在输出中打印UTF-8内容,但如果我在使用SSH登录时手动运行它,怎么会失败呢?这对我来说没有任何意义,为什么这会影响任何不同的东西,但尽管如此,现在一切都正常了,我删除了tweet w/emoji的打印。这里有一个小测试,可以帮助解释为什么你的cronjob出现了问题。假设您的终端设置为使用UTF-8,则以下命令应打印
A®Z
。1
python2-c“print'A\xc2\xaeZ'”
2
python2-c“print'A\xc2\xaeZ'”| cat
3
python2-c“print'A\xc2\xaeZ.”decode('utf8')”
但这将引发
unicodeincodecodeerror
4
python2-c“print'A\xc2\xaeZ'。decode('utf8')”| cat
twitterApi.update_status
需要Unicode文本字符串还是UTF-8字节?您可能会发现这篇文章很有帮助:,它是由经验丰富的Ned Batchelder编写的。字符串也可以。(我想)我需要知道的是如何正确使用.encode/.decode/等将表情符号从csv提取到变量。我假设您的csv文件是用UTF-8编码的。我假设“字符串很好”意味着
twitterApi.update\u status
可以接受
status
arg的Unicode字符串。因此,以二进制模式打开CSV,读取数据,将其从UTF-8解码为Unicode,从该Unicode中获取所需的内容,并将其连接到所需的
状态
字符串中。注意不要将UTF-8字节与Unicode字符串连接,否则Python 2将“有益地”将UTF-8视为ASCII,并尝试将其转换为Unicode;如果UTF-8包含任何非ASCII字节,该过程将失败。因此,这很奇怪,但我发现当我手动运行脚本时,该脚本可以工作,但当我通过cronjob运行脚本时,由于编码原因,该脚本会失败。删除打印推文的行后,它现在可以手动工作,也可以在cronjob上工作。。。但这很奇怪。。。当在cronjob上运行时,在具有相同python容量的同一服务器上运行的脚本怎么会无法在输出中打印UTF-8内容,但如果我在使用SSH登录时手动运行它,怎么会失败呢?这对我来说没有任何意义,为什么这会影响任何不同的东西,但尽管如此,现在一切都正常了,我删除了tweet w/emoji的打印。这里有一个小测试,可以帮助解释为什么你的cronjob出现了问题。假设您的终端设置为使用UTF-8,则以下命令应打印
A®Z
。1
python2-c“print'A\xc2\xaeZ'”
2
python2-c“print'A\xc2\xaeZ'””cat
3
python2-c“print'A\xc2\xaeZ.”decode('utf8')”
但这将引发
unicodeincodeDecerror
4
python2-c“print'A\xc2\xaeZ.”decode>