Как мне разделить или нарезать все только внутри скобки и все еще проходить? - PullRequest
0 голосов
/ 28 апреля 2018

Мне нужно разделить и нарезать этот текст, когда дана строка, подобная этой:

big_str = "[41.386263640000003, -81.494450689999994]    6    2011-08-28 19:02:28    yay. little league world series!\n[42.531041999999999, -82.90854831]    6    2011-08-28 19:02:29    i'm at holiday inn express suites & hotel roseville mi (31900 little mack ave., at masonic blvd., roseville)\n[39.992309570000003, -75.131119729999995]    6    2011-08-28 19:02:29    @_tweetthis what dorm r you in?\n[54.104106119999997, 28.336019929999999]    6    2011-08-28 19:02:29    @andykozik круто !!!\n[25.787949600000001, -80.132949600000003]    5    2011-09-03 05:40:14    pizza rustica #ftw"

Я сделал это с помощью этого кода:

def getLatitude(l):
  for x in l:
    y = list(x.split("\t"))
    for h in y:
        j = list(h.split("]"))
        w = j[0]
        x = len(w)/2
        v = w[1:x-1]
        z = float(v)
        return z
        continue

def getLongitude(x):
  y = list(x.split("\t"))
  w = y[0]
  x = len(w)/2
  v = w[x+1:-1]
  z = float(v)
  return z

def getGpsPixelX(x):
  y = (getLongitude(x) + 180) * 500.0/360
  return y

def getGpsPixelY(y):
  x = 500 - ((getLatitude(y) + 180) * 500.0/360)
  return x

line_list = big_str.split("\n")
getGpsPixelY(line_list)

Мне нужно, чтобы числа в скобках были возвращены в getGpsPixel X или Y, поэтому я попытался выполнить сплайсинг и расщепление, но иногда это приводит к ошибке в функции get Latitude, когда я помещаю два разбиения .. .и не только это, но и даст значение только первой строки, а не других строк постов. Я не уверен, почему, поскольку это цикл for ...

1 Ответ

0 голосов
/ 28 апреля 2018

Использование Regex:

Ex:

import re
import ast
big_str = "[41.386263640000003, -81.494450689999994]    6    2011-08-28 19:02:28    yay. little league world series!\n[42.531041999999999, -82.90854831]    6    2011-08-28 19:02:29    i'm at holiday inn express suites & hotel roseville mi (31900 little mack ave., at masonic blvd., roseville)\n[39.992309570000003, -75.131119729999995]    6    2011-08-28 19:02:29    @_tweetthis what dorm r you in?\n[54.104106119999997, 28.336019929999999]    6    2011-08-28 19:02:29    @andykozik круто !!!\n[25.787949600000001, -80.132949600000003]    5    2011-09-03 05:40:14    pizza rustica #ftw"
res = []
for i in re.findall(r'\[.*?\]', big_str):
    res.extend(ast.literal_eval(i))
print(res)

Выход:

[41.38626364, -81.49445069, 42.531042, -82.90854831, 39.99230957, -75.13111973, 54.10410612, 28.33601993, 25.7879496, -80.1329496]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...