Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PDF编解码器仅部分屏蔽内容_Python_Regex_Pdf_Lambda_Filtering - Fatal编程技术网

Python PDF编解码器仅部分屏蔽内容

Python PDF编解码器仅部分屏蔽内容,python,regex,pdf,lambda,filtering,Python,Regex,Pdf,Lambda,Filtering,我正在使用python PDF redactor,它工作得非常好: github中指定的屏蔽内容的语法如下所示,其中regex是要查找的模式,lambda表达式中的X是要用以下字符串替换找到的模式: options.content_filters = [ ( re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"), lambda m : "XXXX-XXX-XXX-XXXXXX" ) ] 但是如果我想找到与之匹配

我正在使用python PDF redactor,它工作得非常好:

github中指定的屏蔽内容的语法如下所示,其中regex是要查找的模式,lambda表达式中的X是要用以下字符串替换找到的模式:

options.content_filters = [
    (
        re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"),
        lambda m : "XXXX-XXX-XXX-XXXXXX"
    )
]
但是如果我想找到与之匹配的表达式,并且只屏蔽除最后四个字符以外的所有字符,比如:

options.content_filters = [
    (
        re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"),
        lambda m : "XXXX-XXX-XXX-XXRRRR"
    )
]

其中“R”表示保留原始字符。我在github中找不到任何关于如何做到这一点的文档,也没有使用一些内置的regex/lamda功能

您可以对模式进行重新分组,以捕获需要保留的内容,并使用匹配数据对象
m

options.content_filters = [
    (
        re.compile(r"5555-\d{3}-\d{3}-\d{2}(\d{4})"),
        lambda m : "XXXX-XXX-XXX-XX" + m.group(1)
    )
]
这里,
5555-\d{3}-\d{3}-\d{2}
匹配
5555-
,三位数,
-
,三位数,
-
,两位数和
(\d{4})
捕获组1中的四位数。您可以使用
m.group(1)
访问该值

如果您计划将这些代码作为整个单词进行匹配。考虑使用

  • r“\b5555-\d{3}-\d{3}-\d{2}(\d{4})\b”
  • r“(?)?