Я пытаюсь использовать следующий код (в пределах web2py) для чтения файла CSV и конвертировать его в формате JSON объект:питона: CSV для преобразования JSON, когда CSV содержит юникод
import csv
import json
originalfilename, file_stream = db.tablename.file.retrieve(info.file)
file_contents = file_stream.read()
csv_reader = csv.DictReader(StringIO(file_contents))
json = json.dumps([x for x in csv_reader])
Это производит следующее ошибка:
'utf8' codec can't decode byte 0xa0 in position 1: invalid start byte
По-видимому, существует проблема с обработкой пробелов в CSV-файле. Проблема, похоже, связана с линией json.dumps(). Отслеживающий с этого момента:
Traceback (most recent call last):
File ".../web2py/gluon/restricted.py", line 212, in restricted
exec ccode in environment
File ".../controllers/default.py", line 2345, in <module>
File ".../web2py/gluon/globals.py", line 194, in <lambda>
self._caller = lambda f: f()
File ".../web2py/gluon/tools.py", line 3021, in f
return action(*a, **b)
File ".../controllers/default.py", line 697, in generate_vis
request.vars.json = json.dumps(list(csv_reader))
File "/usr/local/lib/python2.7/json/__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "/usr/local/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/local/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 1: invalid start byte
Любые предложения относительно того, как разрешить это, или другой способ, чтобы получить CSV-файл (который содержит заголовок, используя StringIO) в объект JSON, который не будет производить подобные осложнения ? Спасибо.
Это Python 2 или 3? Пожалуйста, включите * full * traceback. –
Вам не нужно использовать понимание списка, где будет выполняться простой вызов 'list()': 'json.dumps (list (csv_reader))' будет более эффективным. –
И последнее, но не менее важное: вам нужно поделиться тем, как вы читаете файл с нами. Что такое веб-инфраструктура? –