2016-08-30 6 views
2

я сначала сбрасывали файл, который содержал конкретное предложение с помощью:Кодирование/декодирование по устранению неполадок, питона томами CSV и JSON файлов

with open(labelFile, "wb") as out: 
     json.dump(result, out,indent=4) 

Это предложение в формате JSON выглядит следующим образом:

"-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating NUMBER_SLOT per year , is a significant contributor to its population growth \u00c3 cents \u00c2 $ \u00c2 `` a daily quota of 150 Mainland Chinese with family ties in LOCATION_SLOT are granted a `` one way permit '' .", 

Затем я приступил для его загрузки через:

with open(sys.argv[1]) as sentenceFile: 
    sentenceFile = json.loads(sentenceFile.read()) 

обработать его, а затем записать его в CSV с помощью:

with open(sys.argv[2], 'wb') as csvfile: 
    fieldnames = ['x','y','z' 
        ] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 
    writer.writeheader() 
    for sentence in sentence2locations2values: 
     sentence = unicode(sentence['parsedSentence']).encode("utf-8") 
     writer.writerow({'x': sentence}) 

Который сделал предложение в файле CSV открыт в Excel для Mac:

-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating NUMBER_SLOT per year , is a significant contributor to its population growth à cents  $  `` a daily quota of 150 Mainland Chinese with family ties in LOCATION_SLOT are granted a `` one way permit '' . 

Затем я приступил взять это из Excel для Маков в Google Таблицы, где это:

-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating NUMBER_SLOT per year , is a significant contributor to its population growth à cents  $  `` a daily quota of 150 Mainland Chinese with family ties in LOCATION_SLOT are granted a `` one way permit '' . 

Примечание: очень немного отличается, Â заменил Ã.

, а затем назвал его, в результате чего его обратно в Excel для Mac в какой момент он стал обратно:

-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating NUMBER_SLOT per year , is a significant contributor to its population growth à cents  $  `` a daily quota of 150 Mainland Chinese with family ties in LOCATION_SLOT are granted a `` one way permit '' . 

Как я сначала прочитал в CSV, содержащий предложение типа:

-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating NUMBER_SLOT per year , is a significant contributor to its population growth à cents  $  `` a daily quota of 150 Mainland Chinese with family ties in LOCATION_SLOT are granted a `` one way permit '' . 

до значения, которое является:

"-LSB- 97 -RSB- However , the influx of immigrants from mainland China , approximating 45,000 per year , is a significant contributor to its population growth \u00c3 cents \u00c2 $ \u00c2 `` a daily quota of 150 Mainland Chinese with family ties in Hong Kong are granted a `` one way permit '' .", 

Так, чтобы он соответствовал тому, что было в оригинальной дампе json прямо в начале этого вопроса?

EDIT

проверить из этого и видеть, что кодирование \u00c3 в Ã, формат в Google листов, на самом деле латинское 8.

EDIT

Я побежал enca и посмотрите, что исходный сбрасываемый файл находится в 7-битных ASCII-символах, а мой CSV находится в юникоде. Так что мне нужно загружать как unicode и конвертировать в 7bit ASCII?

+0

Читая его как обычный файл вместо использования CSV-классов, нужно сделать трюк –

+0

Можете ли вы опубликовать решение или пример? –

ответ

1

Я понял решение этого. Решение состояло в том, чтобы декодировать CSV-файл из его исходного формата (обозначенный как UTF-8), а затем предложение станет оригинальным. Итак:

csvfile = open(sys.argv[1], 'r') 

fieldnames = ("x","y","z") 
reader = csv.DictReader(csvfile, fieldnames) 
next(reader) 

for i,row in enumerate(reader): 
    row['x'] = row['x'].decode("utf-8") 

Очень странно, что случилось, что, когда я редактировал файл CSV в Excel для Mac и сохранены, каждый раз, когда он, кажется, преобразовать в другой кодировке. Я предупреждаю других пользователей об этом, так как это огромная головная боль.

 Смежные вопросы

  • Нет связанных вопросов^_^