i dispose d'un fichier JSON rempli de commentaires des utilisateurs (de racler web) que je l'ai tiré en python avec pandas géantspython3 regex ne change pas « à »
import pandas as pd
data = pd.DataFrame(pd.read_json(filename, orient=columnName,encoding="utf-8"),columns=columnName)
data['full_text'] = data['full_text'].replace('^@ABC(\\u2019s)*[ ,\n]*', '', regex=True)
data['full_text'] = data['full_text'].replace('(\\u2019)', "'", regex=True)
data.to_json('new_abc_short.json',orient='records')
Les messages ne correspondent pas complètement respectif messages en ligne. (emojis montré comme \ u0234 ou quelque chose, apostrophes comme \ u2019, barre oblique dans les liens, et les guillemets ont la barre oblique inverse
je veux les nettoyer ainsi j'ai appris quelque regex, ainsi je peux tirer dans python, nettoyer les puis les resaver à nouveau sous json dans un nom différent (pour l'instant) (https://docs.python.org/3/howto/regex.html)
la deuxième ligne permet de supprimer le pseudo twitter (si elle existe seulement au début), puis supprime si il était utilisé (par exemple @ ABC) .Si il n'y avait pas de pseudo twitter au début (peut-être utilisé au milieu du message) alors cela est conservé, puis il supprime les espaces et les virgules qui ont été laissés (à nouveau seulement au début du par exemple, "@ABC, hi there" devient "hi there". "hi there @ABC" reste le même . « @ Le twitter ABC est grand » deviendrait « twitter est grand »
troisième ligne permet de remplacer tous les apostrophes qui ne pouvait pas être montré (par exemple n \ u2019t revient à ne pas) j'ai
milliers d'enregistrements (pas tous d'entre eux ont des problèmes avec apostrophes, citations, liens, etc.), et sur la base des exemples très petits j'ai regardé, ils semblent travailler
mais mon troisième ne fonctionne pas:
data['full_text'] = data['full_text'].replace('\\"', '"', regex=True)
Exemple de message dans le json: "full_text": "@ ABC Comment pouvez-vous \" fermez accidentellement \ « mon compte »
je veux supprimer le \ à côté des guillemets doubles il semble que le vrai message (je suppose qu'il est un caractère d'échappement que l'utilisateur n'a évidemment pas le type)
mais peu importe ce que je fais, je ne peux pas l'enlever
de mon apprentissage de la regex, "n'est pas un métacaractère. donc backslash ne devrait même pas être là. Mais de toute façon, je l'ai essayé:
\\" (which i think should be the obvious one, i have \", no special quirk in " but there is in \ so i need another back slash to escape that)
\\\\" (some forums posts online mention needing 4 slashes
\\\" (i think someone mention in the forum posts that they got it workin with 3)
\\\(\") (i know that brackets provide groupings so i tried different combinations)
(\\\\")
tous l'expression ci-dessus i enfermé dans des guillemets simples, et ils ne travaillaient pas. Je pensais que peut-être la double citation était le problème car je n'avais qu'un seul, donc j'ai remplacé les guillemets simples avec des guillemets simples x3
'''\\"'''
mais aucune de ces travaillé pour un seul triple guillemets soit
je garde revérifier le nouveau sauvé JSON et je continue à voir:
« full_text »: « Comment pouvez-vous \ » fermez accidentellement \ « mon compte » (ie suppression @ABC avec l'espace travaillé, mais pas le bit de barre oblique inverse)
à l'origine, je tri ed cherchant à convertir ces problèmes Unicode en utilisant encoding = "utf-8") bien que mon expérience dans ce domaine soit limitée et qu'elle continue d'échouer, donc regex est ma meilleure option
Faire ceci est presque certainement la mauvaise approche. Mieux serait de trouver ce que le niveau supplémentaire d'évasion, et en utilisant le même outil pour échapper aux cordes. –
@DanielH Si par outil vous voulez dire ce qui a fourni les données qui ont ensuite été sauvegardées dans json, alors ce serait en raclant twitter? Donc je suppose que je ne peux pas vraiment faire quelque chose du côté de Twitter? – user3120554
Attendez ... qu'est-ce que vous obtenez quand vous dites 'print (data ['full_text'])'? –