Python 列表理解中的正则表达式替换

Ric*_*ckD 4 python regex string list

有谁知道如何在 Python 中使用 re.sub 和列表推导式。

我使用以下内容,

>>> a = ["N","!","1","abc"]
>>> [(re.sub(r'(h|N|!|N|1)', r"'\033[91m'\g<1>'\033[0m'", 'x')) for x in a]
['x', 'x', 'x', 'x']
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我只将 x 作为列表元素返回。

谢谢,

fal*_*tru 5

正如凯文评论的那样,您没有使用x,而是使用了字符串文字'x'

>>> [(re.sub(r'(h|N|!|N|1)', r"'\033[91m'\g<1>'\033[0m'", x)) for x in a]
["'\x1b[91m'N'\x1b[0m'", "'\x1b[91m'!'\x1b[0m'", "'\x1b[91m'1'\x1b[0m'", 'abc']
Run Code Online (Sandbox Code Playgroud)

更新

[....]如果组成部分都是单字符串,则正则表达式可以使用字符类( )来表示。

>>> [(re.sub(r'([hN!1])', r"'\033[91m'\g<1>'\033[0m'", x)) for x in a]
["'\x1b[91m'N'\x1b[0m'", "'\x1b[91m'!'\x1b[0m'", "'\x1b[91m'1'\x1b[0m'", 'abc']
Run Code Online (Sandbox Code Playgroud)