Python 在 if 循环中过滤输出?

Python Filter output in if loop?

我得到了以下代码:

def gps():
    print("\t\tGPS information:")
    for tag in tags.keys():
        if 'GPS' in tag:
            print "%s: , %s" % (tag, tags[tag])

当我 运行 时,我的输出如下所示:

GPS GPSLatitudeRef: , S
GPS GPSLatitude: , [33, 51, 2191/100]
GPS GPSLongitude: , [151, 13, 1173/100]
GPS GPSVersionID: , [0, 0, 2, 2]

如何过滤文本以删除 GPS? 我确实用 spitline 尝试过,但无法让它在 if 循环中工作。

如果您的示例输出是您输出的正确表示。

if 'GPS' in tag:
    print "%s: , %s" % (tag.split(' ')[1], tags[tag])

要替换所有 'GPS' 只需将其替换为空字符串,

if 'GPS' in tag:
    print "%s: , %s" % (tag.replace('GPS', ''), tags[tag])

或者,只是第一次出现,

if 'GPS' in tag:
    print "%s: , %s" % (tag.replace('GPS', '', 1), tags[tag])

指定要替换的次数(在本例中为 1)。或者,像 zondo 指定的那样,

tag.lstrip('GPS')

更新

去掉开头的space可以使用lstrip方法

tag.replace('GPS', '').lstrip()

也许这不是 Python 中最方便的解决方案,但您也可以使用正则表达式进行更复杂的替换:

import re

for tag in tags.keys():
    print "%s: %s" % (re.sub(r'^.*?GPS', '', tag), tags[tag])

(删除第一个 GPS 事件)。如果你想删除所有从头到'GPS'(包括GPS),只需输入:

print "%s: %s" % (re.sub(r'^.*GPS', '', tag), tags[tag])

(删除“?”问号)。但是,对于像这样的字符串:

"GPS SomeStringGPS"

你会得到空字符串,所以要小心。

已编辑:添加了第二种情况。