2
votes

Comment remplacer mes caractères personnalisés par '' en Python?

J'essaye de remplacer mes propres caractères personnalisés par "". Voici ce qui me dérange:

Si je ne remplace qu'un seul caractère, c'est OK:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Users\fefechen\AppData\Local\Programs\Python\Python37\lib\re.py", line 192, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

Le résultat est:

regex = r"[?:\-'\\\|.()\[\]{}/]"
a.loc[:,'title1']=re.sub(regex," ",a.loc[:,'title'],0,re.MULTILINE)


2 commentaires

Je n'ai pas utilisé python. Vous pouvez voir s'il s'agit d'une version python, car le code de test que j'ai donné est 2.x, et vous utilisez 3.x.


Regardez ceci.


3 Réponses :


1
votes

Mis à jour en: b1 = '[?: \ - \' \\\ |. () \ [\] {} /] '

démo regex

Code:

# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility

import re

regex = r"[?:\-'\\\|.()\[\]{}/]"

test_str = "'a/b','a # b','a+b'"

subst = " "

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

if result:
    print (result)

# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.


1 commentaires

Salut, merci beaucoup. Mais je dois enregistrer le résultat dans le bloc de données en tant que nouvelle colonne. Donc c'est différent de votre réponse. Et je ne sais pas comment le réviser. Pourriez-vous s'il vous plaît jeter un œil à ma question modifiée ci-dessus? Merci



1
votes

J'ai trouvé les réponses moi-même. Le dernier ne fonctionne pas car je devrais faire ceci:

b1="[?|:|\-|\–|\'|\\|.|\(|\)|\[|\]|\{|\}|/|#|+|,|;|_|\"|&|@|!|$|%|\|]"

mettre \ devant certains caractères spéciaux.


1 commentaires

Le tuyau entre les caractères d'une classe de caractères est inutile.



1
votes

Cette expression peut également fonctionner,

b1="[|,.:;+–_#&@!$%()[\]{}?'\"\/\\-]"

avec moins d'échappements.


0 commentaires