Seite 1 von 1

To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 13:12
von TimMolb
Hallo zusammen,

ich habe eine Frage zu folgendem Python-Script. Das Script fügt für jede Zeile eines Excel-Arbeitsblattes die Texte einzelner Zellen im Json-Format in der letzten Spalte der Excel-Datei zusammen. Funktioniert alles wunderbar. Einziges Problem ist, dass Umlaute und Sonderzeichen in Unicode-Ausdrücken (z.B. \u00f6 ) dargestellt werden, ich bräuchte sie jedoch ganz normal als Umlaute und Sonderzeichen (z.B. ö oder é).

Wie kann ich den Code entsprechend anpassen? Vielen Dank im Voraus für eure Hilfe.

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 10 13:22:37 2020

@author: Acer
"""
import pandas as pd
import xlwings as xw
#open currently active workbook and navigate to calculation sheet
wb = xw.books.active
ws_searchdata=wb.sheets('Tabelle1')

#get target column for json
column_headers_xls = list((ws_searchdata.range('A1').options(expand='horizontal').value))
column_headers_dict = { column_headers_xls : i for i in range(0, len(column_headers_xls) ) }
col_json_data=column_headers_dict['data']+1

#read in dataframe from excel file, first column must have values
df= ws_searchdata.range('A1').options(pd.DataFrame, expand='table', header=1).value
df.drop(["identitytype", "idworkstatus", "idlanguage", "idowner", "idrelevance", "tsindexed", "desc", "values", "clarification", "extra3", "extra4"], axis = 1, inplace=True)

# iterate over rows in data frame with iterrows() and convert to json, collect in a list
json_data=[]
for index, row in df.iterrows():
json_data.append(row.iloc[:-1].to_json(orient='index'))

#write back to excel file
ws_searchdata.range(2, col_json_data).options(transpose=True).value=json_data

Re: To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 14:08
von __blackjack__
@TimMolb: Die `to_json()`-Methode hat da ein Argument für.

Re: To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 14:11
von TimMolb
__blackjack__ hat geschrieben: Mittwoch 10. Juni 2020, 14:08 @TimMolb: Die `to_json()`-Methode hat da ein Argument für.
Das habe ich mir schon fast gedacht ;) Aber weißt du zufällig auch welches? Habe ausgiebig recherchiert aber nichts gefunden.

Re: To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 14:32
von Sirius3
Wie weit ging denn Deine ausgiebige Recherche?
Welche Option könnte nun dafür verantwortlich sein, dass keine Unicode-Zeichen verwendet werden, sondern alles ASCII-kodiert wird?

Code: Alles auswählen

row.to_json(
    path_or_buf=None,
    orient=None,
    date_format=None,
    double_precision=10,
    force_ascii=True,
    date_unit='ms',
    default_handler=None,
    lines=False,
    compression='infer',
    index=True,
)

Re: To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 14:35
von TimMolb
Okay dummer Fehler, hatte es mit force_ascii=True probiert, da ich ja ascii haben möchte. Mit False ging es dann ;)

Re: To_Json --> Umlaute nicht als Unicode darstellen

Verfasst: Mittwoch 10. Juni 2020, 14:37
von __blackjack__
@TimMolb: Du möchtest *nicht* ASCII haben. ASCII enthält keine Umlaute. Das A steht für American. Umlaute haben die in ihrem Alphabet nicht.