> listb = ['abc', '>**'] >>> for i in listb: ... i = re.sub(r'>** >>> l-6ren">
gpt4 book ai didi

python - 使用 Python 正则表达式将 "<"替换为 "*"

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:25 24 4
gpt4 key购买 nike

我需要遍历列表“listb”中的字符串,将字符“<”替换为“*”。

我试过这样的:

import re
for i in listb:
i = re.sub('\<','\*', 0)

但我不断收到 TypeError: expected string or buffer。

不确定我做错了什么,网上的例子也没有太大帮助。

最佳答案

参见 docs

根据 Seth 的评论,使用正则表达式执行此操作的最佳方法是:

listb = [re.sub(r'<',r'*', i) for i in listb]

正如@Paco 所说,您应该使用 str.replace()反而。但是如果你仍然想使用 re:

您将 0 放在字符串应该去的地方! TypeError 来自第三个参数。它是一个整数,需要是一个字符串。

旁注:在您的正则表达式中始终使用原始字符串,用 r'' 表示,这样您就不必转义。

>>> listb = ['abc', '<asd*', '<<>>**']
>>> for i in listb:
... i = re.sub(r'<',r'*', i)
... print i
...
abc
*asd*
**>>**
>>> listb
['abc', '<asd*', '<<>>**']

如果你想要一个替换所有列表的新列表,请执行:

>>> listx = []
>>> for i in listb:
... listx.append(re.sub(r'<',r'*', i))
...
>>> listx
['abc', '*asd*', '**>>**']
>>> listb
['abc', '<asd*', '<<>>**']
>>> listb = listx

如果您真的不想创建新列表,可以遍历索引。

请注意,您没有更改列表中的 i。我会在这里创建一个新列表。这里的每个 i 都是它自己的变量,不指向 listb。

关于python - 使用 Python 正则表达式将 "<"替换为 "*",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18413559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com