如何使用正则表达式提取文档/文本中的所有引号?

时间:2015-01-20 04:40:06

标签: python regex nlp nltk

我试图使用python regex提取出现在文档内部的所有引用。

我的代码如下,但它不起作用:

import re
hand = open('citi.txt')
for line in hand:
    line = line.rstrip()
    if re.search('(?:"(.*?)")', line):
        print line

1 个答案:

答案 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。

现在可以使用您提供的摘录。