python正则表达式匹配不带引号的行

时间:2014-08-31 09:11:25

标签: python regex

我有一个用于匹配文本的正则表达式,但我需要匹配文本,将文本留在引号内。

考虑:

I have a pen1
I have a pen1 "green"

实际上我需要将文本留在引号内,并说两行都相同。下面的代码将匹配同一行,然后用no.s递增,以减少文本中数据之间的冗余。但是我需要将文本留在""并取剩下的文本,如果发现其余文本相同,则增加no.s

代码:thnks to @falsetru

import re
numbers = {}
with open('1.txt') as f:
    for line in f:
        row = re.split(r'(\d+)', line.strip())
        words = tuple(row[::2])  # Extract non-number parts to use it as key
        if words not in numbers:
            numbers[words] = [int(n) for n in row[1::2]]  # extract number parts.
        numbers[words] = [n+1 for n in numbers[words]]  # Increase numbers.
        row[1::2] = map(str, numbers[words])  # Assign back numbers
        print(''.join(row))

要考虑的内容不考虑" "

请帮助,答案将不胜感激!

1 个答案:

答案 0 :(得分:2)

你可以在没有正则表达式的情况下做到这一点:

>>> s = 'foo "bar" baz'
>>> ''.join(s.split('"')[::2])
'foo  baz'

基本上,它将字符串拆分为"个字符,保留偶数索引部分并加入它们。

如果你真的想使用正则表达式:

>>> s = 'foo "bar" baz'
>>> re.sub('".*"', '', s)
'foo  baz'