Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 使用正则表达式避免特殊字符_Python_Regex - Fatal编程技术网

Python 使用正则表达式避免特殊字符

Python 使用正则表达式避免特殊字符,python,regex,Python,Regex,我正在编写一个Python脚本来从PDF用户pyPdf提取元数据 输出如下所示: {'/Subject': u'Presentation from the 2011 Water Program Peer Review', '/Producer': u'Mac OS X 10.7.2 Quartz PDFContext', '/Creator': u'PowerPoint', '/ModDate': u"D:20120109085812-07'00'", '/Keywords': u

我正在编写一个Python脚本来从PDF用户pyPdf提取元数据

输出如下所示:

{'/Subject': u'Presentation from the 2011 Water Program Peer Review',
 '/Producer': u'Mac OS X 10.7.2 Quartz PDFContext', 
 '/Creator': u'PowerPoint', 
 '/ModDate': u"D:20120109085812-07'00'", 
 '/Keywords': u'', 
 '/Title': u'Wind Wave Float', 
 '/CreationDate': 'D:20111030043455Z'}
我只需要
标题
主题
字段,因此打印输出最好是:

风浪飘浮,来自

因此,我可以轻松地将数据输入电子表格

有人能帮我弄点regex吗?我似乎不知道如何处理输出中所有奇怪的字符

谢谢。

试试:

(?i)((?<=subject': u')[^']+|(?<=title': u')[^']+)
它基本上匹配了
主题:u'
/Title':u'
之后不是

的任何内容,请尝试以下正则表达式:

'/(Subject|Title)':\s+u('[^']+'|"[^"]+")(?=, )
描述

演示

您正在查看的输出是一本词典,因此您需要的信息已经可用。您在输出字典中看到的“u”表示字符串为Unicode格式

我认为要实现将信息输入电子表格的目标,最简单的方法是在脚本中添加以下内容:

(在Python2.x中):

这将为您提供以下输出:

Wind Wave Float, Presentation from...

(将上面的outputdict替换为提供您在问题中粘贴的词典输出的任何对象)

如果打印该词典对象,您的输出是什么?该词典对象是终端中打印的输出。如果您明确打印作为输出的词典,使用
打印mydictionary
?为什么需要使用正则表达式?pyPDF不是提供了可以直接访问的python对象吗?我不确定,我刚开始使用该模块,我不清楚所有的复杂之处。嘿,谢谢,这在Debuggex上非常有效,但是我在脚本中无法正确运行它。你能帮我弄清楚如何正确地输入它吗?output=re.match('therexex',string)返回一个语法错误。我不会说谎regex我知道python我不知道。在其他语言中,正则表达式本身将具有需要转义的字符,例如int c#此正则表达式的'\\.'必须是'\\.'才能转义反斜杠,或者'\.\.'可以是@'\.\.\.'将成为'\.\.\.\.'.'将转义字符串中的所有特殊字符。我相信python,你有re.escape()?它的行为似乎与我刚才描述的@相似?尝试按照以下方式做某事:x=re.escape(regex);输出=重新匹配(x,字符串)。
print outputdict['/Title'] + ", " + outputdict['/Subject']
Wind Wave Float, Presentation from...