Заменить число за словом в текстовом файле - PullRequest
1 голос
/ 21 марта 2020

Я, кажется, немного смущен тем, как использовать строки, int и float. Я пытаюсь прочитать .txt файл с именем TEST.txt. Это содержит:

Hoi

Total: 350

Я хочу добавить значение к общему количеству. Я пытаюсь это так:

# open the file
with open("TEST.txt") as f:
    # read lines
    lines = f.readlines()
# set a sting only to read line 2
string = (lines[2])
# remove the characters from the string
stringNub = string.replace("Total: ","")
print (stringNub)

min = 300
sum3 = int(stringNub) + int(min)
print(sum3)

# replace the string
with open('TEST.txt','r') as file:
    filedata = file.read()
    filedata = filedata.replace(stringNub,sum3)
with open('TEST.txt','w') as file:
    file.write(filedata)

    # replace the string
    with open('TEST.txt','r') as file:
        filedata = file.read()
        filedata = filedata.replace(string2,sum3)
    with open('TEST.txt','w') as file:
        file.write(filedata)

Я надеялся, что код будет записывать в текст, например, так:

Hoi

Total: 650

Вместо этого я в конечном итоге с этой ошибкой: TypeError: replace () аргумент 2 должен быть str, а не int

Но если я сделаю int a str , то результат будет 350300 .

(я очень начинающий / любитель). Я знаю, что код, вероятно, выглядит не очень красиво, но кто-нибудь может сказать мне, что я делаю неправильно?

1 Ответ

1 голос
/ 21 марта 2020

Вот одно из решений. Замените число, записав его в правильную позицию файла.

with open('TEST.txt', 'r+') as f:
    text = f.read()
    i = text.index('Total: ') + 7
    num = int(text[i:]) + 300
    f.seek(i)
    f.write(str(num))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...