用一行中的某个字符串过滤文本文件,然后在该行中返回另一个字符串

时间:2015-08-24 04:59:16

标签: json string python-2.7 filter

这是我的名为team.json的文本文件 我的问题是我只知道如何返回特定的行, 例如,我选择一个过滤器位置,如PQ我将如何返回具有PQ位置的名称。提前谢谢。

import json
my_data = json.loads(open("team.json.txt").read())

print my_data

for line in open('team.json.txt'):
 if "John" in line:
  print line

这是我的代码但只返回行

  try {
                PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    String sign = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                    Log.e("MY KEY HASH:", sign);
                    //textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
                    //textInstructionsOrLink.setText(sign);
                    Toast.makeText(getApplicationContext(), sign, Toast.LENGTH_LONG).show();
                }
            } catch (PackageManager.NameNotFoundException e) {
                Log.d("nope", "nope");
            } catch (NoSuchAlgorithmException e) {
            }

1 个答案:

答案 0 :(得分:1)

解析完json数据后,可以使用它来提取PQ位置的成员:

member_in_pq = [member for member in my_data['members'] \
    if member['location'] == 'PQ']
print(member_in_pq)
# -> [{'age': 24, 'location': 'PQ', 'name': 'Jesse'}, ...]

或者,如果您只想要名称:

member_in_pq = [member['name'] for member in my_data['members'] \
    if member['location'] == 'PQ']
print(member_in_pq)
# -> ['Jesse', 'Jez',..., 'Cherry']

我建议您使用已解析的数据版本,而不是返回并手动解析文件。