如何从文本文件中获取字典元素

时间:2016-05-27 08:13:39

标签: python python-2.7

我需要使用python从文本文件中获取字典元素,并构建此python代码:

#  -*- coding: utf-8 -*-

user_input = raw_input('Write group name: ')
data_file = open('data.txt', 'r')
d = data_file.read()
print d[user_input]

data.txt文件:

group1 = {
    'jhon',
    'sam',
    'mees'
}

group2 = {
    '212332'
}

group3 = {
    'USA',
    'UK'
}

但是我收到了这个错误:

Traceback (most recent call last):
  File "test.py3", line 7, in <module>
    print d[user_input]
TypeError: string indices must be integers, not str

如何从data.text文件中获取字典元素?

2 个答案:

答案 0 :(得分:1)

d = data_file.read()以字符串形式返回文件中的所有数据。 您可以使用imp模块分配变量的一种方法。这将.txt文件作为python模块处理:

import imp
with open('data.txt', 'r') as f:
    file = imp.load_source('file', '', f)

然后您可以使用.运算符检索变量:

>>> file.group1
{'sam', 'jhon', 'mees'}
>>> file.group2
{'212332'}
>>> file.group3
{'USA', 'UK'}

如果您可以重命名文件,可以将扩展名更改为.py,只需将文件作为模块导入:

import dataFile

输出:

>>> dataFile.group1
{'jhon', 'sam', 'mees'}
>>> dataFile.group2
{'212332'}
>>> dataFile.group3
{'USA', 'UK'}

请注意,这意味着您必须从文件中注释掉任何非python语法。

答案 1 :(得分:-1)

data.txt中

{
    "group1": [
        " jhon",
        "sam",
        "mees"
    ],
    "group2": [
        "212332"
    ],
    "group3": [
        "USA",
        "UK"
    ]
}

代码:

import json
data_file = open('data.txt', 'r')
d = json.loads(data_file.read().strip())
print d["group1"]