pythonregex:替换字符串中模式出现之前的一些字符

2024-09-29 22:34:18 发布

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

我在使用python的3正则表达式替换字符串中的字符时遇到了一个问题。我可以找到模式的出现,但是我想替换模式中第一个出现的字符。不幸的是我要替换整个模式。另一方面,我在这个任务中使用正则表达式可能是错误的。以下是我所拥有的:

>>> my_table1='\nParametr JednostkaNormaGodzinaŚrednia(1)123456789101112131415161718192021222324 \nDwutlenek siarki (SO2) µg/m3 350 56 53 50 51 51 44 41 36 39 42 34 30 34 33 26 25 24 23 24 25 21 21 22 24 35 \nTlenek azotu (NO) µg/m3 30 30 27 29 44 98 192

我要做的是在数字之间插入''或';'。我不能简单地用逗号替换所有空格,因为我不想分割这个部分:\nDwutlenek siarki (SO2) µg/m3。所以我想用regex(r'\s\d+')来查找空格和数字的出现。这将正确查找所有实例。现在我想使用子函数将\s替换为',,但我不知道如何将\s与模式隔离开来。有什么想法吗?在


Tags: 字符串my错误模式数字字符m3空格
1条回答
网友
1楼 · 发布于 2024-09-29 22:34:18

使用lookbehind/lookahead,如下所示:

p = re.compile(r'(?<=\d)\s(?=\d)')
p.sub(';', my_table1)

正查找(?<=\d)匹配数字(\d)之后的任何内容,而不匹配数字本身;\s匹配单个空白字符;正前瞻(?=\d)匹配任何跟在数字后面的内容。因此,这将用;替换两个数字之间的任何单个空格。注意,lookbehind/ahead需要是固定长度的(因此不能使用(?<=\d+))之类的东西。在

在您的情况下,只要r'\s(?=\d)'就足够了,可能不需要回头看。在

相关问题 更多 >

    热门问题