正则表达式不适用于Python(旧版本)

2024-10-02 18:15:00 发布

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

将文本解析为所需格式后,我必须在另一台机器上运行它,该机器的python版本比我使用的旧

我在本地机器中使用的正则表达式如下:

splitty = [re.sub(r"(.*?)\-\d+\-\d+\-(\d+)", r"\1=\2", i) for i in splitty]

但另一个似乎不起作用

我曾尝试查看Python2.7的文档以及类似的答案,但我没有找到将其转换为Python2.7的方法

实际结果是:

11.22.233.122/19\name_of_machine\t8\t8\t0

理想的方案是:

11.22.233.122/19\name_of_machine=0

输入字符串:

10.101.0.240/29\tname1\t8\t8\t0
14.101.0.222/29\tname2\t8\t8\t0
11.101.2.211/29\tname3\t8\t7\t1
10.121.2.22/26\tname4\t64\t63\t1
11.201.0.214/29\name5\t8\t6\t2

Tags: ofnamein文档文本版本re机器
1条回答
网友
1楼 · 发布于 2024-10-02 18:15:00

首先,我也无法让您的代码在Python3下工作。其次,您声称的输入字符串似乎不正确:最后一行是\name,而不是\tname,我怀疑这是错误的。就你的“期望输出”而言,我只能假设“机器名”是从你的正则表达式判断的最后一个数字中取出来的

import re

s = """10.101.0.240/29\tname1\t8\t8\t0
14.101.0.222/29\tname2\t8\t8\t0
11.101.2.211/29\tname3\t8\t7\t1
10.121.2.22/26\tname4\t64\t63\t1
11.201.0.214/29\tname5\t8\t6\t2"""

splitty = s.split('\n')
splitty = [re.sub(r"(.*?)\t\d+\t\d+\t(\d+)", r"\1=\2", i) for i in splitty]
print(splitty)

印刷品:

['10.101.0.240/29\tname1=0', '14.101.0.222/29\tname2=0', '11.101.2.211/29\tname3=1', '10.121.2.22/26\tname4=1', '11.201.0.214/29\tname5=2']

您要查找的是-个字符(不需要转义),而不是数字之间的制表符

相关问题 更多 >