Python:写一个方法,传入字符串和pattern两个参数,如何处理转义问题?

代码如下

    def get_info(self, string, pattern):
        pattern = re.compile(pattern)
        if pattern.search(string):
            return pattern.search(string).group(1)
        else:
            return '空'
            
   # 在另一个方法里调用(同一个类)
        str1 = 'xxx'
        pattern = 'x' # 或者写为'r"x"' ?
        name = self.get_info(str1, pattern)

问题在于,我之前写re.compile(r'x') 之中处理了转义的问题,现在如何传入参数,解决这个转义的问题?
说得不太明白,表达能力不够,见谅。

阅读 8.2k
2 个回答
  1. 你的转义是在get_info里面处理的,传参直接传pattern字符串就好了
  2. get_info里面的pattern变量建议改个名字,和传进来的参数重名

如果不想在 get_info 外面写 re.compile() 可以直接传 pattern 字符串,如果 pattern 字符串里有固定的格式只是一些变量不一样,也可以给函数直接传变量。

In [1]: import re
In [2]: string = "11111333111111"

In [10]: key_word = r"33"
In [11]: re.search(key_word, string).group()
Out[11]: '33'

In [10]: key_word = "33"
In [13]: re.search(r"1%s" % key_word, string).group()
         # 这里推荐使用 % 格式化是因为使用 format 方法时,
         # RawString 内不可以有数量限定符 {} 。
Out[13]: '133'
In [14]: re.search(r"" + key_word, string).group()
         # 或者直接拼接字符串,普通字符串和 r"" 相加结果也是 RawString。
Out[15]: '33'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题