我有一个用于匹配文本的正则表达式,但我需要匹配文本,将文本留在引号内。
考虑:
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))
要考虑的内容不考虑" "
请帮助,答案将不胜感激!
答案 0 :(得分:2)
你可以在没有正则表达式的情况下做到这一点:
>>> s = 'foo "bar" baz'
>>> ''.join(s.split('"')[::2])
'foo baz'
基本上,它将字符串拆分为"
个字符,保留偶数索引部分并加入它们。
如果你真的想使用正则表达式:
>>> s = 'foo "bar" baz'
>>> re.sub('".*"', '', s)
'foo baz'