我一直在编写一个python脚本,在tweet上发布一些关于我pihole的信息,但遇到了一个小问题。我似乎无法让re.sub
像我希望的那样为我工作。你知道吗
我试图完成的是获取netifaces.interfaces()
的输出,对我来说是['lo', 'ens4', 'tun0', 'tun1']
,并使它看起来像ens4, tun0, tun1
我试过使用
netfaces = str(netifaces.interfaces())
netfaces = re.sub('\[|\'|lo|\'|\]', '', netfaces)
但它给了我这个输出:
, ens4, tun0, tun1
编辑:
谢谢@第四只鸟
我扩展了他们给我的正则表达式,得出了这个结论
'lo'(?:,\s*)?|[][')(]|(?:,\s*)?'lo'
我的看法:
'lo'(?:,\s*)?
-在字符串中搜索'lo',
并删除所有已找到的内容
[][')(]
-删除所有][
'
)(
无论找到什么物质
(?:,\s*)?'lo'
-删除所有, 'lo'
无论找到什么物质
这也适用于我得到的os.getloadavg()
输出
得到该结果的原因是,您正在匹配4个可选项,这些可选项也可以写成
[][']|lo
,但您没有匹配逗号及其后的空格,因此不会删除。你知道吗如果要从列表中删除
'lo'
,而不在开始处留下逗号和空格,可以使用:'lo'(?:,\s*)?
Match lo后跟可选部分以匹配逗号和1+空格字符|
或[][']
匹配字符类[
、]
、'
中列出的任何字符替换为空字符串。你知道吗
Regex demo| Python demo
例如
结果
不清楚为什么要生成类似于列表的字符串,但是可以使用这个正则表达式
然后用空字符串删除它以获得所需的字符串。你知道吗
因为您只想删除第一个逗号和它前面的所有内容,所以需要
^[^,]+,\s*
,其余部分还需要删除所有引号,使用'
和]
以及\]
Regex Demo
作为另一种方法,我假设您最初在列表中有元素,您最好使用这种不依赖regex的方法来获得预期的输出。你知道吗
打印您的预期输出
相关问题 更多 >
编程相关推荐