如何用regex替换找到的表达式中的文本?

2024-05-19 17:04:13 发布

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

我有一个.txt文件,其中包含以下行(数百行):

AAIT    AC Asia Information Tech MSCI Ishares
AAL     American Airlines Group Inc.
AAME    Atlantic American Corp
AAOI    Applied Optoelectronics Inc
AAON    Aaon Inc

我想将这些行替换为:

1.AAIT
2.AAL
3.AAME
4.AAOI
5.AAON

如何使用grep、python或任何与regex兼容的程序来实现它?对我来说重要的是学习如何在replacement语句中使用“foundexpression”变量。你知道吗

例如,我希望regex选择AAIT,将其存储到变量中,删除第1行并使用变量将1.AAIT写入第1行,依此类推。有没有可能用一个与regex兼容的程序(比如grep)来实现这一点,或者你必须使用一种编程语言(比如python)?如果您必须使用python,您能给我一个关于要使用的函数和库的提示吗?这将使我能够遍历所有行,选择分隔符(tab)之前的所有内容并执行我需要它执行的操作?你知道吗


Tags: 文件程序txtinformationgrepacregexinc
3条回答

试试这个

import re

str = """ AAIT    AC Asia Information Tech MSCI Ishares
AAL     American Airlines Group Inc.
AAME    Atlantic American Corp
AAOI    Applied Optoelectronics Inc
AAON    Aaon Inc """

match = re.findall(r'^(\w+)\b', str, re.MULTILINE)

print match ##['AAL', 'AAME', 'AAOI', 'AAON']

http://regex101.com/r/oO5wE0/1

无法获取python fiddle来保存文件,但您可以插入该代码,它就可以工作了。你知道吗

如果您可以使用awk,那么它将是:

awk '{print NR"."$1}' file
1.AAIT
2.AAL
3.AAME
4.AAOI
5.AAON

比如说:

/^((?:AAIT|AAL|AAME|AAOI|AAON)(?:.*))/gm

使用修饰符m使其成为多行,并能够使用^匹配每行的行乞。你知道吗

http://regex101.com/r/fD3yG9/1

相关问题 更多 >