Как создать список из строки - PullRequest
0 голосов
/ 28 мая 2020

У меня есть следующий вопрос:

  • Учитывая эту строку:

    (- 9.1801505 38.7320159, -9.1800081 38.7316384, -9.1760106 38.7280334, -9.175614100000001 38.727791499, -999.1799 38.7276969, -9,174286 38,7273452, -9,1739754 38,7269114, -9,173853299999999 38,7266373, -9,173908000000001 38,726382, -9,174462200000001 38,725427, -9,174693700000001 38,7252121, -9,1753494 38,7249695, -9,1772258 38,724483, -9,177979300000001 38,7241841, -9,1781305 38,7240326, -9,178122200000001 38,7237591, -9,174915199999999 38,7229978, -9,172651999999999 38,7224599, -9,1716237 38,7223014, -9,170840099999999 38,7223315, -9,1661269 38,7232445, -9,1631047 38,7238009, -9,1621644 38,7239822, -9,1611914 38,7241708, -9,161030500000001 38,7242016, -9,1606402 38,7242798, -9,1605509 38,7242976, -9,1597224 38,7244719, -9,1588452 38,7246248, -9,1574752 38.7248025, -9.1563748 38.7248708, -9.157024399999999 38.7252864, -9.160008299999999 38.7284055, -9.158204400000001 38.7296856, -9.15547 51 38,7316224, -9,158455399999999 38,7338999, -9,159123599999999 38,7336254, -9,159243399999999 38,733823, -9,1590688 38,734304, -9,1587736 38,7343032, -9,1585287 38,7344595, -9,1584726 38,7346586, -9,158265099999999 38,7346166, -9,157652300000001 38,7361352, -9,1579041 38,7362527, -9,1576316 38,7366198, -9,1577363 38,7366731 , -9,1574563 38,7371094, -9,1564187 38,737462, -9,157724699999999 38,7388573, -9,1598056 38,7379811, -9,1602277 38,73791, -9,165917800000001 38,738966, -9,166425500000001 38,7392131, -9,167036400000001 38,7396749, -9,168542199999999 38,7416702, -9,169788499999999 38,740959, -9,170749499999999 38,7402073, -9,171019899999999 38,7398203, - 9.1712919 38.7392233, -9,1716798 38,7391685, -9,1719215 38,7391826, -9,172312700000001 38,7392701, -9,1727472 38,7394396, -9,1738649 38,7388609, -9,174271299999999 38,7365449, -9,174486099999999 38,7343981, -9,1743024 38,734297, -9,174186000000001 38,7341419, -9,1741347 38,7338797, -9,174625199999999 38,7332609, -9,1749603 38,7329354 , -9.175330799999999 38.7327162, -9.1756046 38.7326312, -9.176090200000001 38.7325687, -9.1776274 38.7328163, -9.177988300000001 38.7328404, * 10.7328404, -9.178248099999999 38.73268159 **, -9.17824809999 ** Я превращаю его в список списков?

    Например, эта строка: (-9.1801505 38.7320159, -9.1800081 38.7316384, -9.1760106 38.7280334) будет такой:

    [[-9.1801505, 38.7320159], [-9.1800081, 38.7316384], [-9.1760106, 38.7280334]]
    

Ответы [ 4 ]

1 голос
/ 28 мая 2020

Вы можете использовать регулярное выражение, чтобы найти все пары, а затем преобразовать их в список списков с плавающей запятой:

import re

string = '(-9.1801505 38.7320159, -9.1800081 38.7316384, -9.1760106 38.7280334)'

print([list(map(float, match)) for match in re.findall(r'(-?\d+\.\d+) (-?\d+\.\d+)', string)])

Вывод:

[[-9.1801505, 38.7320159], [-9.1800081, 38.7316384], [-9.1760106, 38.7280334]]
1 голос
/ 28 мая 2020

Попробуйте преобразовать все данные в строку и использовать функцию разделения:

data = "-9.1801505 38.7320159, -9.1800081 38.7316384, -9.1760106 38.7280334, -9.175614100000001 38.7277934, -9.174941499999999 38.7276969, -9.174286 38.7273452, -9.1739754 38.7269114, -9.173853299999999 38.7266373, -9.173908000000001 38.726382, -9.174462200000001 38.725427, -9.174693700000001 38.7252121, -9.1753494 38.7249695, -9.1772258 38.724483, -9.177979300000001 38.7241841, -9.1781305 38.7240326, -9.178122200000001 38.7237591, -9.174915199999999 38.7229978, -9.172651999999999 38.7224599, -9.1716237 38.7223014, -9.170840099999999 38.7223315, -9.1661269 38.7232445, -9.1631047 38.7238009, -9.1621644 38.7239822, -9.1611914 38.7241708, -9.161030500000001 38.7242016, -9.1606402 38.7242798, -9.1605509 38.7242976, -9.1597224 38.7244719, -9.1588452 38.7246248, -9.1574752 38.7248025, -9.1563748 38.7248708, -9.157024399999999 38.7252864, -9.160008299999999 38.7284055, -9.158204400000001 38.7296856, -9.1554751 38.7316224, -9.158455399999999 38.7338999, -9.159123599999999 38.7336254, -9.159243399999999 38.733823, -9.1590688 38.734304, -9.1587736 38.7343032, -9.1585287 38.7344595, -9.1584726 38.7346586, -9.158265099999999 38.7346166, -9.157652300000001 38.7361352, -9.1579041 38.7362527, -9.1576316 38.7366198, -9.1577363 38.7366731, -9.1574563 38.7371094, -9.1564187 38.737462, -9.157724699999999 38.7388573, -9.1598056 38.7379811, -9.1602277 38.73791, -9.165917800000001 38.738966, -9.166425500000001 38.7392131, -9.167036400000001 38.7396749, -9.168542199999999 38.7416702, -9.169788499999999 38.740959, -9.170749499999999 38.7402073, -9.171019899999999 38.7398203, -9.1712919 38.7392233, -9.1716798 38.7391685, -9.1719215 38.7391826, -9.172312700000001 38.7392701, -9.1727472 38.7394396, -9.1738649 38.7388609, -9.174271299999999 38.7365449, -9.174486099999999 38.7343981, -9.1743024 38.734297, -9.174186000000001 38.7341419, -9.1741347 38.7338797, -9.174625199999999 38.7332609, -9.1749603 38.7329354, -9.175330799999999 38.7327162, -9.1756046 38.7326312, -9.176090200000001 38.7325687, -9.1776274 38.7328163, -9.177988300000001 38.7328404, -9.178248099999999 38.7328097, -9.1799505 38.7322568, -9.1801505 38.7320159"

for i in data.split(','):
    print(i.split())

Я только что распечатал элементы, которые имеют форму: ['-9.1712919', '38.7392233'] ps: удалите скобки перед преобразованием в строку.

1 голос
/ 28 мая 2020

, если ваши данные - tuple из strings, то это может быть полезно:

data = ("-9.1801505 38.7320159", "-9.1800081 38.7316384", "-9.1760106 38.7280334")

output = [t.split() for t in data]

display(output)

[['-9.1801505', '38.7320159'],
 ['-9.1800081', '38.7316384'],
 ['-9.1760106', '38.7280334']]
1 голос
/ 28 мая 2020

Учитывая, что это строка, вы можете сделать это так:

string = '(-9.1801505 38.7320159, -9.1800081 38.7316384, -9.1760106 38.7280334)'
l = []
for tup in string[1:-1].split(','):
    l.append([float(val) for val in tup.split()])
print(l)

Вывод:

[[-9.1801505, 38.7320159], [-9.1800081, 38.7316384], [-9.1760106, 38.7280334]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...