从Python

时间:2018-05-29 12:36:27

标签: python regex list

我在Python中有一个列表,其中第一个项目映射了助行器所采用的路线。 ' 0' 0是步行的起点,而且是' 68'代表第一个航点。助行器总是在它开始的地方结束。

因此,起点和终点之间的点可以看作是步行的中间点或航路点。

['Route 0: 0([1.11, 2.11]) ->  68([5.11, -6.11]) ->  0([1.11, 2.11]) Service Time(53) Time(1:54, 24:0)\n',
'item 2\n',
'item 3\n',
'item 4\n']

有没有办法可以抓住列表第一项中的每个坐标,并将它们标记为起点,终点或中间点,将它们打印成CSV?

我尝试指定每个坐标前面都有一个'(['在第1项中但是没有工作。

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读了这个问题,那么您正在尝试匹配数字 ([ 东西])

import re
data = [
    'Route 0: 0([1.11, 2.11]) ->  68([5.11, -6.11]) ->  0([1.11, 2.11]) Service Time(53) Time(1:54, 24:0)\n',
    'item 2\n',
    'item 3\n',
    'item 4\n']

matches = re.findall(r'(\d+)\(\[(.+?),(.+?)\]\)', data[0])
coords = [(int(p), float(x), float(y)) for p, x, y in matches]
print(coords)
# [(0, 1.11, 2.11), (68, 5.11, -6.11), (0, 1.11, 2.11)]

然后你可以遍历该列表并将其放入CSV。