Как получить определённое число из строки и в дальнейшем изменить его?

Мне нужно получить число "power", которое записано в data.txt. Только не кричите на меня, я впервые имею дело с питоном и этим сайтом.

    import vk_api
import random
import time
import datetime
#если вы не знаете что вообще за токен то посмотрите мой первый ролик на эту тему https://www.youtube.com/watch?v=n-b6HJ5R1c4&feature=youtu.be
token = ""



vk = vk_api.VkApi(token=token)

vk._auth_token()


now = datetime.datetime.now()
timeA = now.hour




def construct(id,name,money,power):
    p = {}
    p["name"] = name
    p["money"] = money
    p["messegNumb"] = 0
    p["power"] = power

    data[str(id)] = p


    return "normal"


def savebd():
    with open("data.txt", "w") as file:
        for  i in data:#проходимся по data и получаем id в нем
            p = str(i) + " " +str(data[i]["name"]) +" " +str(data[i]["money"])+ " " +str(data[i]["messegNumb"])+ " " +str(data[i]["power"])

            file.write(p + '\n') #записываем в data.txt построчно пользователей

def loadbd():
    file = open("data.txt","r")
    datas= file.read()
    datas = datas.splitlines()
    file.close()
    data = {}
    for i in datas:
        i = i.split()
        if len(i)>4:#проверка на полноту данных
            data[str(i[0])] = {}
            data[str(i[0])]["name"] = i[1]
            data[str(i[0])]["money"] = i[2]
            data[str(i[0])]["messegNumb"] = i[3]
            data[str(i[0])]["power"] = i[4]

    return(data)

data = loadbd()#загружаем в переменную data информацию из функции loadbd и файла data.txt

while True:
    #добавления монет каждый час пользователя
    #часть игровой механики бота

    messages = vk.method("messages.getConversations", {"offset": 0, "count": 20, "filter": "unanswered"})
    if messages["count"] >= 1:
        id = messages["items"][0]["last_message"]["from_id"]
        body = messages["items"][0]["last_message"]["text"]

        help = "Все команды:\nя - узнать про себя побольше\nтоп - топ 10 дырок\nкупить [кол-во] - купить варбаксы\nдуэль [ставка] - предложить дуэль\nочко - измерить очко\nпоход - найти приключения на задницу\nлавка - глянуть товары в лавке\nник [имя] - сменить ник"
        shop = "квазелин - купить вазелин за 10 варбаксов"
        shop = shop + "\nкскример - купить скример за 15 варбаксов"
        shop = shop + "\nкслаб - купить слабительное за 15 варбаксов"
        shop = shop + "\nкпетарда - купить петарду за 25 варбаксов"
        shop = shop + "\n--------------------------------------------"
        shop = shop + "\nпвазелин - продать вазелин за 10 варбаксов"
        shop = shop + "\nпскример - продать скример за 15 варбаксов"
        shop = shop + "\nпслаб - продать слабительное за 15 варбаксов"
        shop = shop + "\nппетарда - продать петарду за 25 варбаксов"
        shop = shop + "\n--------------------------------------------"
        shop = shop + "\nкейс - открыть кейс"
        shop = shop + "\nсмазать - заюзать вазелин(+5 к удаче при измерении дырки)"
        shop = shop + "\nвзорвать - увеличивает очко на 1-10 см"
        shop = shop + "\nнапугать {ссылка} - уменьшает очко на 5 см"
        shop = shop + "\nскамнуть {ссылка} - украсть 30 варбаксов"
        shop = shop + "\nпросраться - заюзать слабительное (снимает кд с похода)"

        nick = str(data[str(id)]["name"])
        sm = str(data[str(id)]["power"])
        money = str(data[str(id)]["money"])


        #авторизация пользователя в боте
        n = 0
        for i in data:
            print(i)
            if str(id) == i :
                n = 1
        if n == 0:
            construct(id , id , 0 , 0)

        #простые команды
        if body.lower() == "привет":
            vk.method("messages.send", {"peer_id": id, "message": "Привет! Пиши 'помощь' или я нихуя не пойму", "random_id": random.randint(1, 2147483647)})
        elif body.lower() == "помощь":
            vk.method("messages.send", {"peer_id": id, "message": help, "random_id": random.randint(1, 2147483647)})
        elif body.lower() == "лавка":
            vk.method("messages.send", {"peer_id": id, "message": shop, "random_id": random.randint(1, 2147483647)})
        elif body.lower() == "я":
            stat = "это же " + nick
            stat = stat + "\nдиаметр очка: " + sm
            stat = stat + "см\nварбаксов: " + money
            stat = stat + "⍟\n--------------------------------------------\nинвентарь:\nвазелин - N шт.\nкейс - N шт.\nпетарда - N шт.\nскример - N шт.\nноут - N шт.\nслабительное - N шт."
            vk.method("messages.send", {"peer_id": id, "message": stat, "random_id": random.randint(1, 2147483647)})
#        elif body.lower() == "очко":

        elif (bodyone[0] == "ник") and (len(bodyone)>1):
            #состовные команды
            bodyone = body.lower().split()
            if (bodyone[0] == "ник") and (len(bodyone)>1):
                data[str(id)]["name"] = bodyone[1] #меняем имя пользователя в боте на новое

                vk.method("messages.send", {"peer_id": id, "message": "ник изменен на " + str(bodyone[1]), "random_id": random.randint(1, 2147483647)})

            else:
                #если бот не нашел команду которую он может выполнить
                vk.method("messages.send", {"peer_id": id, "message": "долбаёб, я бот, напиши помощь", "random_id": random.randint(1, 2147483647)})
        savebd()

Ответы (2 шт):

Автор решения: passant

Как оказалось из всей простыни вашего кода вам надо ответ на единственный вопрос:

Допустим в файле есть число 0, я должен взять его прибавить к нему определённое число и записать получившееся число в файл вместо 0 Могу я как-то прибавить к значению какое-то число?

Ответ:

f = open ( "data.txt" , "r" )
a=int(f.readline())
f.close()
a=a+1
f = open("data.txt" , "w")
f.write(str(a))   
f.close()

Перед выполнением скрипта в файле data.txt записан "0". После выполнения - "1".

Вот теперь вставьте этот ответ в ваш код.

По коду и не скажешь, что вы "впервые имеете дело с Python". Или вы просто его откуда-то бездумно содрали? И еще - если вы первый раз на этом сайте - то откуда вам известно что тут на кого-то "кричат"? Чей-то где-то вы лукавите.

→ Ссылка
Автор решения: Daniil Loban

После строки while True: в коде начинается вечный цикл, а данные уже находятся в data для того чтобы добавлять число к определенному power можно написать такую функуцию

def add_power(id, num):
   data[str(id)]["power"] = int(data[str(id)]["power"]) + num
   savebd() # обновляем  файл data.txt

Пример использования:

Допустим есть файл с записью: 97826088 dmitriy 0 0 0

После выполнения скрипта файл будет содержать: 97826088 dmitriy 0 0 1

Код скрипта для теста (после его запуска значение увеличится) делается это за счет вызова функции add_power так add_power(97826088, 1)

def savebd():
    with open("data.txt", "w") as file:
        for  i in data:#проходимся по data и получаем id в нем
            p = str(i) + " " +str(data[i]["name"]) +" " +str(data[i]["money"])+ " " +str(data[i]["messegNumb"])+ " " +str(data[i]["power"])

            file.write(p + '\n') #записываем в data.txt построчно пользователей

def loadbd():
    file = open("data.txt","r")
    datas= file.read()
    datas = datas.splitlines()
    file.close()
    data = {}
    for i in datas:
        i = i.split()
        if len(i)>4:#проверка на полноту данных
            data[str(i[0])] = {}
            data[str(i[0])]["name"] = i[1]
            data[str(i[0])]["money"] = i[2]
            data[str(i[0])]["messegNumb"] = i[3]
            data[str(i[0])]["power"] = i[4]

    return(data)

def add_power(id, num):
   data[str(id)]["power"] = int(data[str(id)]["power"]) + num
   savebd() # обновляем  файл data.txt

data = loadbd()

add_power(97826088, 1)
→ Ссылка