Python从文本文件中查找字段

时间:2015-10-02 15:40:57

标签: python python-2.7 replace

非常简单的python 2.7查找/替换文本问题 - 我有文本文件,每个都是一个长行(没有换行符),并且每个长行内部是逗号分隔的部分,如此(尽管有部分不是这种格式):

"Country":"USA","City":"Chicago","Phone":"123-456-7890","Contact":"John Doe"

我想通过文本文件,每当找到我正在寻找的几个字段之一的':'字符时,打印出字段和相应的值(总是在引号中)它们之间的分隔符......所以我要说我只关注'Country''City'字段 - 我想在引号中找到这些字段名称之一并打印出相应的值,如此:

Country|USA City|Chicago

同时忽略所有其他':'配对值。

2 个答案:

答案 0 :(得分:1)

with open('file.txt', 'rb') as f:
    data = {x.split(':')[0].replace('"', '').lower().strip(): x.split(':')[1].replace('"', '').strip() for x in f.read().split(',')}

user_in = raw_input('Search: ')
print '{0}|{1}'.format(user_in, data.get(user_in.lower(), 'Not Found'))

答案 1 :(得分:0)

st = '"Country":"USA","City":"Chicago","Phone":"123-456-7890","Contact":"John Doe"'

def get_value(string_,key_):
    d = {}
    st2 = string_.split(",")

    for el in st2:
        k,v = el.split(":")
        k = k[1:-1]
        d[k] = v

    return d[key_][1:-1]


print(get_value(st, "Country") )
# USA

keywords  = ["Country","City", "Phone", "Contact"]

for w in keywords:
    print(get_value(st, w))

USA
Chicago
123-456-7890
John Doe