как получить имя переменной в этом файле с помощью Python - PullRequest
0 голосов
/ 17 марта 2011

это a.txt:

    attackUp = [10, 15]
    defenceUp = [10, 15]
    magicUp = [10, 15]
    attType = [1, 1]
    weightDown = [10, 15]

    #装饰器数据
    accAttackSword = [100, 100]
    accAttackSaber = [100, 100]
    accAttackAx = [100, 100]
    accAttackHammer = [100, 100]
    accAttackSpear = [100, 100]
    accAttackFight = [100, 100]

    accAttackBow = [100, 100]
    accAttackMagicGun = [100, 100]
    accAttackMagic = [100, 100]
    mStrInstrument = [100, 100]
    mStrCharms = [100, 100]
    accDefencePhy = [100, 100]
    accDefenceMag = [100, 100]
    accWeight = [100, 90, 0,0, 100, 90]

    #战术书数据
    bookTurn = [1, 1]
    bookAttackPhy = [100, 100]
    bookAttackMag = [100, 100]
    bookStrInstrument = [100, 100]
    bookStrCharms = [100, 100]
    bookDefencePhy = [100, 100]
    bookDefenceMag = [100, 100]
    bookWeight = [100, 100]

    #数据
    data = self.owner.get_user_info()
    npc = self.create_npc()
    name = [self.owner.name,'npc_1']
    plvl = [data.get('level'),npc.get('level')]
    str = [data.get('power'),npc.get('power')]
    ski = [data.get('skill'),npc.get('skill')]
    mag = [data.get('magic'),npc.get('magic')]
    spd = base.get('speed')[:2]
    locX = base.get('locX')
    locX = [locX[1],locX[4]]
    locY = base.get('locY')
    locY = [locY[1],locY[4]]
    wName = []; wAttack = []; wDefence = []; wWeight = [];wType = []; target = []

я хочу получить вот такой вот диктовку:

{'attackUp':attackUp,'defenceUp':defenceUp,'magicUp':magicUp ...}

это мой код:

a=open('a.txt', 'rb')
a=a.read()

что я могу сделать,

спасибо

обновлено:

я использую этот код:

with open('a.txt', 'rb') as f:
    contents = f.read().decode('utf-8-sig')

items = {  }
for line in contents.split('\n'):
    item = line.split('=')[0].strip()
    items[item] = item

b=open('b.txt','wb')
b.write(unicode(items))

но он показывает:

{u'': u'', u'accDefencePhy': u'accDefencePhy', u'mStrCharms': u'mStrCharms', ..}

я хочу получить

{ 'accDefencePhy': accDefencePhy, 'mStrCharms': mStrCharms, ..}

так как удалить ' и u

Ответы [ 2 ]

1 голос
/ 17 марта 2011

При условии, что вы удалите self.* «переменные» из вашего файла (Python не знает, как их понять), вы можете получить словарь, содержащий то, что вы хотите:

import a  # This supposes that your file is named a.py instead of a.txt

var_dict = vars(a)

print var_dict['accDefencePhy']  # Yields [100, 100]

(Вы также получаете несколько дополнительных записей в var_dict (а именно __doc__ и т. Д.), Которые вы можете удалить, если необходимо, после копирования исходного словаря с помощью var_dict = vars(a).copy().)

0 голосов
/ 17 марта 2011

Почему бы просто не превратить этот текстовый файл в файл .py и импортировать его в модули, в которых вы хотите использовать значения?

вместо

attackup = chardict ['attackup']

импорт charattrs

attackup = charattrs.attackup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...