Py学习  »  Python

正则表达式python数据提取

Abeer Sheikh • 5 年前 • 1510 次点击  

如何使用python正则表达式从下面两个字符串中提取数据

TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress

TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed

我需要以下csv文件:

格式:任务ID、优先级、状态

TASK000123,P1,In Progress

TASK000123,P2,Completed

我该怎么做?谢谢你帮我

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40373
 
1510 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    6 年前

这里有一个选项 re.findall :

input = "TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress\nTASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed"
results = re.findall(r"(TASK\d+).*?-(P\d+) --(.*)(?=\n|$)", input)
print(results)

[('TASK000123', 'P1', 'In Progress'), ('TASK000123', 'P1', 'Completed')]

注意 DOT ALL 这里不需要模式,因为我们不需要 .* 跨行匹配。而且,上面的方法在没有使用 MULTILINE 模式也一样。

Rakesh
Reply   •   2 楼
Rakesh    6 年前

这是一种使用简单迭代的方法。

前任:

s = """TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --In Progress
TASK000123-Tomcat server hosted on tbu.test1 is down-P1 --Completed"""

result = [["TaskID","Priority","Status"]]

for i in s.splitlines():
    val = i.split("-")                          #Split by '-'
    result.append([val[0], val[2], val[-1]])
print(result)

产量:

[['TaskID', 'Priority', 'Status'],
 ['TASK000123', 'P1 ', 'In Progress'],
 ['TASK000123', 'P1 ', 'Completed']]