我试图使用python regex提取出现在文档内部的所有引用。
我的代码如下,但它不起作用:
import re
hand = open('citi.txt')
for line in hand:
line = line.rstrip()
if re.search('(?:"(.*?)")', line):
print line
答案 0 :(得分:3)
您可以使用re.findall('(?:"(.*?)")', line)
仅从行中提取引用的文本,而不是打印整行,即使每行有多个出现。您的代码可以修改如下:
import re
# This will make sure citi.txt is properly closed after opening it.
# infl.read() will read the whole file as single string, so no need to loop
with open('citi.txt', 'r') as infl:
hand = infl.read()
# And look for occurences of your string
match = re.findall('(?:"(.*?)")', hand)
if match:
print match
e.g。如果line == 'This is "a sample" line with "two quoted" substrings'
,此代码将打印['a sample', 'two quoted']
修改:改编为unicode
您的报价似乎是unicode字符。请注意",“,”之间的细微差别(我最初也没有发现)。
我的原始答案和您的代码示例基于ASCII字符串,但您需要这样的正则表达式字符串:
match = re.findall(u'(?:\u201c(.*?)\u201d)', hand)
说明:\u201c
用于左双引号,\u201d
用于右双引号,u
将字符串标记为的Unicode。
现在可以使用您提供的摘录。