相关疑难解决方法(0)

将每个字典值转换为utf-8(字典理解?)

我有一本字典,我想将每个值转换为utf-8.这有效,但是有更"pythonic"的方式吗?

            for key in row.keys():
                row[key] = unicode(row[key]).encode("utf-8")
Run Code Online (Sandbox Code Playgroud)

我可以做的列表

[unicode(s).encode("utf-8") for s in row]
Run Code Online (Sandbox Code Playgroud)

但我不确定如何为词典做同样的事情.

这与Python Dictionary Comprehension不同,因为我不是从头开始创建字典,而是从现有字典创建字典.链接问题的解决方案没有告诉我如何遍历现有字典中的键/值对,以便将它们修改为新字典的新k/v对.下面的答案(已经被接受)显示了如何做到这一点,并且对于具有类似于我的任务的人而言,阅读/理解的内容要比关联相关问题的答案更清楚,后者更复杂.

python list-comprehension utf-8

9
推荐指数
3
解决办法
3万
查看次数

使用pandas方法to_sql与MySQL时的另一个UnicodeEncodeError

我几天前在堆栈溢出上发布了一个类似的问题(已经解决了),我不确定这里的礼仪是什么,但我正在发一个新帖子.

基本上,当我尝试将pandas DataFrame写入MySQL数据库时,我得到一个UnicodeEncodeError.我可以使用以下代码重现错误:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mysql://root:@localhost/testdb')
df = pd.DataFrame([[u'\u2013',2],['e',4]], index = ['a','b'], columns = ['c','d'])
df.to_sql('data', engine, if_exists = 'replace', index = False)
Run Code Online (Sandbox Code Playgroud)

这是错误:

UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2013' in position 0: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)

这是追溯的最后一个相关行:

C:\Anaconda\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.pyc in do_executemany(self, cursor, statement, parameters, context)
     93 
     94     def do_executemany(self, cursor, statement, parameters, context=None):
---> 95         rowcount = cursor.executemany(statement, parameters)
     96         if context is not None:
     97             context._rowcount = rowcount …
Run Code Online (Sandbox Code Playgroud)

python mysql pandas

4
推荐指数
1
解决办法
2857
查看次数

标签 统计

python ×2

list-comprehension ×1

mysql ×1

pandas ×1

utf-8 ×1