[PYTHON] [openpyxl] Was tun, wenn IllegalCharacterError in pandas.DataFrame.to_excel angezeigt wird?

Voraussetzungen

Das Problem, mit dem Sie sich diesmal befassen möchten

import pandas
target_df = pandas.DataFrame(Gegebene Daten)

Wenn ich also versuche, diesen Datenrahmen in eine Excel-Datei auszugeben,

---------------------------------------------------------------------------
IllegalCharacterError                     Traceback (most recent call last)
<ipython-input-88-d629d1ba2e9a> in <module>()
      1 # subset_df = subset_df.applymap(illegal_char_remover)
      2 
----> 3 subset_df.to_excel("./test.xlsx")

/Users/noname/.pyenv/versions/3.5.2/lib/python3.5/site-packages/pandas/core/frame.py in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose)
   1462         formatted_cells = formatter.get_formatted_cells()
   1463         excel_writer.write_cells(formatted_cells, sheet_name,
-> 1464                                  startrow=startrow, startcol=startcol)
   1465         if need_save:
   1466             excel_writer.save()

/Users/noname/.pyenv/versions/3.5.2/lib/python3.5/site-packages/pandas/io/excel.py in write_cells(self, cells, sheet_name, startrow, startcol)
   1313                 column=startcol + cell.col + 1
   1314             )
-> 1315             xcell.value = _conv_value(cell.val)
   1316 
   1317             style_kwargs = {}

/Users/noname/.pyenv/versions/3.5.2/lib/python3.5/site-packages/openpyxl/cell/cell.py in value(self, value)
    290     def value(self, value):
    291         """Set the value and infer type and display options."""
--> 292         self._bind_value(value)
    293 
    294     @property

/Users/noname/.pyenv/versions/3.5.2/lib/python3.5/site-packages/openpyxl/cell/cell.py in _bind_value(self, value)
    189 
    190         elif isinstance(value, STRING_TYPES):
--> 191             value = self.check_string(value)
    192             self.data_type = self.TYPE_STRING
    193             if len(value) > 1 and value.startswith("="):

/Users/noname/.pyenv/versions/3.5.2/lib/python3.5/site-packages/openpyxl/cell/cell.py in check_string(self, value)
    154         value = value[:32767]
    155         if next(ILLEGAL_CHARACTERS_RE.finditer(value), None):
--> 156             raise IllegalCharacterError
    157         return value
    158 

IllegalCharacterError: 

Das Problem, wütend zu werden. Ich habe auch nach der Suche keine Lösung gefunden, daher werde ich sie veröffentlichen.

Ansatz

IllegalCharacter wird in openpyxl wie folgt definiert. (https://bitbucket.org/openpyxl/openpyxl/src/dad834128adcb5ca4330bd2bc4bc714b54ccfbb9/openpyxl/cell/cell.py?at=default&fileviewer=file-view-default Line69)

ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]')

Daher denke ich, ich sollte dieses IllegalCharacter aus dem Datenrahmen entfernen.

import re

# ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]')
ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]|[\x00-\x1f\x7f-\x9f]|[\uffff]')
def illegal_char_remover(data):
    """Remove ILLEGAL CHARACTER."""
    if isinstance(data, str):
        return ILLEGAL_CHARACTERS_RE.sub("", data)
    else:
        return data

target_df = target_df.applymap(illegal_char_remover)

Wenn Sie es also entfernen, tritt dieser Fehler nicht auf.

Diesen Herbst (gelöst)

Nach dem Entfernen von \ uffff wird der folgende Fehler nicht mehr angezeigt.

~~ Leider, auch wenn Sie diesen Fehler zum Zeitpunkt des Exports beseitigen ~~

ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

Bitte beachten Sie, dass Sie möglicherweise einige Verbesserungen vornehmen müssen, da Sie wütend werden. ~~ ~~ Eine Geschichte über das Bereinigen von Daten vor dem Experimentieren. ~~

Nachtrag

Dies ist mein erster Beitrag. Wenn Sie also Probleme haben, weisen Sie bitte darauf hin. Dann.

Recommended Posts

[openpyxl] Was tun, wenn IllegalCharacterError in pandas.DataFrame.to_excel angezeigt wird?
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
Was tun, wenn in Django "Ungültiger HTTP_HOST-Header" angezeigt wird?
Was tun, wenn in der Anaconda-Umgebung die Warnung "Die Umgebung ist konsistent ..." angezeigt wird
Was tun, wenn eine Warnung zur Python-Integration in Neovims CheckHealth angezeigt wird?
Was tun, wenn "TypeError: Datentyp nicht verstanden" in der Python-Datei numpy.zeros angezeigt wird?
Was tun, wenn [Errno 2] in Python keine solche Datei oder kein solches Verzeichnis angezeigt wird?
Was tun, wenn Ubuntu abstürzt?
OSError: [Errno 40] Was tun, wenn die Nachricht zu lang erscheint?
Was tun, wenn beim Ausführen von Python eine Warnung zur unsicheren Plattform angezeigt wird?
Was tun, wenn UnicodeDecodeError während read_csv in Pandas auftritt (pd.read_table ())
Was tun, wenn ModuleNotFoundError: In Python tritt kein Modul mit dem Namen 'XXX' auf
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
[Memorandum] Was tun, wenn nach dem Ausführen der Pip-Liste eine Warnung angezeigt wird?
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
Was tun, wenn pyinstaller: error: argument --add-binary: ungültig add_data_or_binary value: angezeigt wird
[Docker] Was tun, wenn ein Fehler aufgetreten ist? Der Binär-Git wurde nicht gefunden
Was tun, wenn in pydoc keine Python-Dokumentation für ... gefunden wird?
[OSX] [pyenv] Was tun, wenn in pip ein SSL-Fehler auftritt?
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?
Was tun, wenn pipreqs zu UnicodeDecodeError führt?
Was tun, wenn ein PermissionError in tempfile.mkstemp auftritt?
Was tun, um eine Google-Tabelle in Python zu erhalten?
Was ist zu tun, wenn "Betriebssystemfehler: [WinError 126] Das angegebene Modul kann nicht gefunden werden" in der Importlampe angezeigt wird
[Python] Was tun, wenn bei send_keys in Headless Chrome ein Fehler auftritt?
Was tun, wenn bei Verwendung von strptime "TypeError: muss Zeichenfolge sein, nicht int ..." angezeigt wird
Was tun, wenn ein SSL-Fehler mit pip in einer Windows10-, Miniconda- oder VScode-Umgebung auftritt?
Was tun, wenn bei der Eingabe eines Kameravideos in OpenCV ein Abbruch angezeigt wird?
Was tun, wenn das Diagramm nicht auf dem Jupyter-Notizbuch (Ipython) angezeigt wird?
Was tun, wenn NotADirectoryError: [Errno 20] Kein Verzeichnis: 'xdg-settings' wird im Jupyter-Notizbuch angezeigt
Was beim Nachahmen zu tun ist, wird in Python eingebettet
Was tun, wenn die Pip-Installation in Xcode 5.1 fehlschlägt?
curl: (60) Was tun, wenn das Ausstellerzertifikat ungültig ist?
Was tun, wenn gdal_merge eine große Datei generiert?
Was tun, wenn ValueError, "nicht unterstützter Hash-Typ" ausgelöst wird?
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?
Was tun, wenn "Name xxx nicht importiert werden kann" [Python]
Ich möchte am Ende etwas mit Python machen
Was zu tun ist, wenn es nicht in der Sudoers-Datei enthalten ist. Dieser Vorfall wird gemeldet.
[Python] Was tun, wenn beim Erstellen von Exe mit PyInstaller kein Modul mit dem Namen "pyproj.datadir" angezeigt wird?
Was tun, wenn nur das Fenster angezeigt wird und im Pygame nichts angezeigt wird?
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Was tun, wenn in GAE "Typfehler: muss _socket.socket sein, nicht Socket" angezeigt wird
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Was tun, wenn `Argumente [0] .scrollIntoView ();` in Python-Selen fehlschlägt?
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
Was tun, wenn pip in Homebrew einen DistributionError ausgibt?
Was tun, wenn die PyCharm-Schrift seltsam oder verstümmelt ist?
Was tun, wenn beim Aktualisieren von conda ein Fehler beim Entfernen auftritt?
Was tun, wenn nicht ausrichtbare boolesche Reihen als Indexer bereitgestellt werden?
Was tun, wenn Overalls "Abdeckung unbekannt" werden?
Was tun, wenn in tf.train.start_queue_runners () ein 0xC0000005-Fehler auftritt?
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
Was tun, wenn die Paketinstallation bei der Bereitstellung auf heroku fehlschlägt?
Was tun, wenn Sie sich nicht als root anmelden können?
ImportError: Kein Modul Was tun, wenn Sie dazu aufgefordert werden?
Was tun, wenn aufgrund der Proxy-Einstellungen in Python Web Scraping keine Antwort erfolgt?
Was tun, wenn ein nicht in pom.xml definiertes Glas zu einem fehlenden Artefakt wird?
Was tun, wenn beim Ausführen von "certbot erneuern" in der CakePHP-Umgebung eine Fehlermeldung angezeigt wird?