【问题标题】:Regex replace in List Comprehension in PythonPython中列表理解中的正则表达式替换
【发布时间】:2014-10-02 00:24:14
【问题描述】:

有谁知道如何在 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']

如您所见,我只将 x 作为列表元素返回。

谢谢,

【问题讨论】:

  • 我看到你在做for x in a,但你从未真正使用过x 变量。这是故意的吗?
  • 取消引用'x',它会起作用。

标签: python regex string list


【解决方案1】:

正如凯文所说,你没有使用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']

更新

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

>>> [(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']

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多