【问题标题】:Unicode error pythonUnicode错误python
【发布时间】:2023-04-07 21:00:01
【问题描述】:

这是问题的要点。
我正在尝试从 REST API 调用中获取数据并将它们存储在数据库中。
然后我运行了几个查询来找出 TOP 3 用户。我无法将从 MySQL 获取的所有列表值打包到 JSON 文件中。

我无法解决以下问题。

文件“/Users/id1/Downloads/user1.py”,第 58 行,在
get_last_three_installed_user
results.append(dict(zip(columns, row)))

TypeError: 'unicode' 对象不可调用

这是 SQL 查询的输出

+----------------+--------+-------------+------------+-----------------+
| name           | gender | nationality | registered | registered_date |
+----------------+--------+-------------+------------+-----------------+
| mélissa robin  | female | FR          | 1437761753 | 2015-07-24      |
| agathe fabre   | female | FR          | 1437002837 | 2015-07-15      |
| soline morin   | female | FR          | 1436138376 | 2015-07-05      |
+----------------+--------+-------------+------------+-----------------+

如果我尝试 str(name) 我会收到以下错误:

name = str(json_dict["results"][result]["user"]["name"]["first"]) +"
"+ str(json_dict["results"][result]["user"]["name"]["last"])

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in
位置 1:序数不在范围内(128)

这是我的代码:

def get_last_three_installed_user(file_type):
    count_sql = "select name,gender,nationality,registered,DATE_FORMAT(from_unixtime(registered), '%Y-%m-%d') registered_date from install_user order by from_unixtime(registered) desc limit 3 "
    curs.execute(count_sql)
    columns = [column[0] for column in curs.description]
    results = []

    if file_type == 'csv':
        fp = open('user_list.csv', 'w')
        csvFile = csv.writer(fp)
        rows = curs.fetchall()
        csvFile.writerows(rows)
    else:
        with open('file_count.json', 'w') as outfile:
            for row in curs.fetchall():
               results.append(dict(zip(columns, row)))
               print results
            output = {"TableData": results}
            json.dump(output, outfile, sort_keys = True, indent = 4, ensure_ascii=False)

【问题讨论】:

  • 第一条错误消息对我来说没有意义,因为我没有看到任何尝试的“调用”。但是,第二个可以 - 您将无法 str() 包含非 ascii 字符的内容。是什么让您尝试添加 str 电话?
  • m.wasowski - 希望这段代码适合你。
  • 您似乎为zipdict 分配了内置对象以外的其他内容。对内容超出 ASCII 范围的 unicode 对象调用 str() 将始终失败;改用显式编码。
  • 没关系,我想通了。

标签:
python
unicode