搜索符合不同长度的数字

Searching numbers in line with different lengths

我得到了带有文本行的 gps 日志文件

{"location": {"lat": 50.0918805, "lng": 14.4261817}, "accuracy": 29.1671027, "ts": 1598515548}

我的目标是打印纬度和经度的值,我能够做到这一点:

folder_path = 'D:\path'
for filename in glob.glob(os.path.join(folder_path, '*.geo.json')):
  with open(filename, 'r') as filecontent:
    readme = filecontent.read()
    lat = readme[21:28]
    long = readme[40:47]
    print(lat, long)

而且我认为这对我来说是完美的,我得到了不错的数字,例如:

50.0918 14.4260
50.0920 4.42629
50.0918 14.4260
50.0917 14.4258
50.0920 14.4263
50.0917 14.4259
50.0918 14.4260
50.0919 4261233

但实际上缺少数字,问题出在日志中,为 latitude/longtitude 生成的数字并不总是相同的长度,我从第一个字符的位置开始打印数字。 我试图只打印数字并用“,”分隔它们,但我不想要更多的数字。

我被卡住了,无法弄清楚如何打印 "lat":"lng": 之后但不是 "accuracy":

之后的所有数字

如果你能帮助我,我会很高兴,干杯。

这是结构化的文本,所以你不妨利用结构化,例如:

import json

content = """{"location": {"lat": 50.0918805, "lng": 14.4261817}, "accuracy": 29.1671027, "ts": 1598515548}"""
data = json.loads(content)
print(data["location"]["lat"], data["location"]["lng"])

这会产生

50.0918805 14.4261817

您应该使用 json 库来解析您的 .json 文件:

import json
import glob

folder_path = 'D:\path'
for filename in glob.glob(os.path.join(folder_path, '*.geo.json')):
    coords = json.load(open(filename, 'r'))
    print(
        coords['location']['lat'],
        coords['location']['lng'],
        coords['accuracy']
    )

# 50.0918805 14.4261817 29.1671027