使用python从每行中读取选定的文本

2024-10-03 06:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含字符串的文件

[{"resourceId": "sid-14E51598-BEE7-45E0-9974-A38B07CE6892"}]
[{"resourceId": "sid-A5B57DEB-C024-4D89-AD99-86FC340A6742"}]
[{"resourceId": "sid-3775C783-4491-44B9-904C-1763C080E9C6"}]    
[{"resourceId": "sid-8F636B07-3010-4D27-9E9B-08DB1D25AC96"}]

我只想使用python从每一行获取sid-8F636B07-3010-4D27-9E9B-08DB1D25AC96。我该怎么做?你知道吗


Tags: 文件字符串sidresourceidc024bee7a5b57debad99
3条回答

只需将每行按双引号分开,然后打印第三个索引。你知道吗

with open('file') as f:
    for line in f:
        print(line.split('"')[3])

例如,如果文件名为测试.txt地址:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json

with open('test.txt') as fh:
    for line in fh:
        data = json.loads(line)
        print data[0]['resourceId']

列表中有可以用ast.literal_eval解析的dict:

from ast import literal_eval

with open("in.txt") as f:
    for line in f:
        print(literal_eval(line)[0]["resourceId"])

sid-14E51598-BEE7-45E0-9974-A38B07CE6892
sid-A5B57DEB-C024-4D89-AD99-86FC340A6742
sid-3775C783-4491-44B9-904C-1763C080E9C6
sid-8F636B07-3010-4D27-9E9B-08DB1D25AC96

或者使用json.loads如果所有项目都用双引号括起来:

from json import loads

with open("in.txt") as f:
    for line in f:
        print(loads(line)[0]["resourceId"])

sid-14E51598-BEE7-45E0-9974-A38B07CE6892
sid-A5B57DEB-C024-4D89-AD99-86FC340A6742
sid-3775C783-4491-44B9-904C-1763C080E9C6
sid-8F636B07-3010-4D27-9E9B-08DB1D25AC96

如果不总是确定键名,只需访问以下值:

from json import loads
with open("in.txt") as f:
    for line in f:
        print(list(loads(line)[0].values())[0])

相关问题 更多 >