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

2024-04-25 16:44:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

考虑:

I have a pen1
I have a pen1 "green"

事实上,我需要将文本保留在引号内,并说两行是相同的。下面的代码将匹配同一行,然后用编号递增,以减少文本中数据的冗余。但是我需要将文本保留在“”内,并获取剩余的文本,如果发现其余文本相同,则增加编号

你知道吗code:thnks to @假象

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))

包括哪些内容不考虑“”中的文本

请帮忙,谢谢回答


Tags: toin文本renumberforhaveas
1条回答
网友
1楼 · 发布于 2024-04-25 16:44:36

您可以在不使用正则表达式的情况下执行此操作:

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

基本上,它在"个字符处分割字符串,甚至保留索引部分,并将它们连接起来

如果确实要使用regexp:

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

相关问题 更多 >