2015-10-19 1 views
2

devez choisir l'adresse IP de cette chaîne str1 = '<\11.1.1.1\testdata>'Escape "" caractère dans la chaîne de python [ont besoin pour éviter l'encodage hexa]

Lorsque l'option suivante mise en œuvre 1. reg = re.compile("^.*\/+([\d\.]+)/\+.*$",re.I).search mth = reg(str2) mth.group(1)

a reçu le message d'erreur

Traceback (most recent call last): 
    File "<pyshell#90>", line 1, in <module> 
    mth.group(1) 
AttributeError: 'NoneType' object has no attribute 'group' 

l'option 2.

str1 = "<\11.1.1.1\cisco>" 
str1.replace("\\","\\\\") 
print str1 

output - '<\t.1.1.1\\\\cisco>' 
  1. Essayé faisant str1 comme une chaîne brute

    str1 = r"<\11.1.1.1\cisco>" str2 = str1.replace("\\","/"); print str2 output - '</11.1.1.1/cisco>'

    reg = re.compile("^.*\/+([\d\.]+)/\+.*$",re.I).search mth = reg(str2) mth.group(1)

'

error message - 
Traceback (most recent call last): 
    File "<pyshell#90>", line 1, in <module> 
    mth.group(1) 
AttributeError: 'NoneType' object has no attribute 'group' 
+1

Vous avez essayé cordes premières ... mais seulement sur 'str1' et non sur la régulière expression? – TigerhawkT3

Répondre

4

Vous devez chaîne brute formulaire:

str1 = r"<\11.1.1.1\cisco>" 
print re.search(r'\b\d+(?:\.\d+)+\b', str1).group() 
11.1.1.1 
1
str1 = r'<\11.1.1.1\testdata>' 
reg = re.compile(r"^.*?\\([\d\.]+)\\.*$",re.I) 
mth = reg.search(str1) 

print mth.group(1) 

Vous devez utiliser des chaînes raw aux deux endroits.

Sortie: 11.1.1.1

Si vous ne voulez pas utiliser la chaîne raw pour regex vous devrez utiliser

reg = re.compile("^.*?\\\([\d\.]+)\\\.*$",re.I)