【发布时间】:2018-11-08 19:40:05
【问题描述】:
我正在从 Google Biqquery 中的查询中提取数据。我通过 python 脚本连接到 Google API,在 python 脚本中执行查询并将查询结果写入 CSV 文件。 当我从脚本中对样本数据(100 行)执行查询时,一切看起来都很好。但是当我为整个数据执行脚本时,它失败了。
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 38: ordinal not in range(128)
我看到这是一个 python 错误,但是当脚本试图处理包含非英文字符的记录时会发生这种情况。 我在 Hive 中遇到了同样的问题,但我通过使用下面给出的 RLIKE 函数解决了这个问题
(CASE WHEN FIELD1 not rlike '[^a-zA-Z()\\|\\d\\s\\(_)\\-\\(/):]' THEN FIELD1 ELSE 'data' END) AS FIELD1
Google BigQuery 中是否有类似的方法或功能来查找和替换非英文字符? 或者,这可以在 python 脚本中处理吗?
代码sn-p:
job_id, _results = MY_CLIENT.query("""select FIELD1, FIELD2, FIELD3, FIELD4 FROM TABLE1""", use_legacy_sql=True)
complete, row_count = MY_CLIENT.check_job(job_id)
results = MY_CLIENT.get_query_rows(job_id)
outfile = open('C:\\Users\\test.csv', 'w')
for row in results:
for key in row.keys():
if key == 'FIELD4':
outfile.write("%s" %str(row[key]))
else:
outfile.write("%s," %str(row[key]))
outfile.write("\n")
outfile.close()
提前感谢您的帮助!
【问题讨论】:
-
你用的是python 2.7吗?
-
是的,我使用的是 Python 2.7