繁体   English   中英

Python字典自动转义正斜杠

[英]python dictionary autoescapes forward slash

我有一个类,在这个类中我想存储一个包含正则表达式的变量。 在这种情况下,可以识别IP地址:

class Foo:
'''a class to parse through an sosreport and begin the cleaning process required in many industries'''

def __init__(self, somefile):

    self.version = '0.1'
    self.somefile = somefile
    self.network_search = {'strings':('foo','bar','foobar','barfoo',), 'regex':"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"}

不幸的是,当我从提示符下调用变量时,得到以下信息:

>>> a = Foo('sosreport')
>>> a.network_search['regex']
'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})'

是否有可能做到这一点? 有没有更好的办法? 我试过单引号和双引号,但是想不出办法。

这里的困惑在于正则表达式和字符串之间。
您从字符串构建一个正则表达式,如果您打印一个正则表达式(隐式执行;从技术上讲,您实际上并不是在打印,而是得到了字符串表示形式),那么您会得到一个字符串。 该字符串必须将反斜杠显示为转义符,但是正则表达式的内部表示实际上是在执行您想要的操作。

显然无论如何...

>>> a = Foo('somefile')
>>> a.network_search['regex']
'(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})'
>>> import re
>>> string1 = 'ip addy is 192.168.1.153 so there'
>>> x=a.network_search['regex']
>>> m = re.search(x,string1)
>>> if m:
...   print your IP matches
... 
your IP matches
>>> string2 = 'no ip addy so there'
>>> n = re.search(x,string2)
>>> if n:
...   print "your IP matches"
... 
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM