Python спецификация c модификация файла - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть файл с именем «data.txt», который выглядит следующим образом:

Oliver
14052
Jack
2257
Harry
22568
Jacob
684940
Connor
46871

В этом файле имя Оливера соответствует номеру 14052, имя Джека соответствует номеру 2257, .. .

Я ищу создание функции, которая принимает два аргумента: (name (str), number (int))

Функция должна искать, если имя уже находится в файле:

Если он есть, он добавляет число, переданное в качестве аргумента, и число, соответствующее имени в файле. Затем он заменяет в файле старую цифру результатом суммирования.

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

Спасибо за внимание к моему вопросу. Хорошего дня!

Ответы [ 3 ]

0 голосов
/ 13 апреля 2020

Попробуйте это

def search(name, num):
    with open('test.txt', 'r') as fp:
        data = fp.read().split("\n")
        if name in data:
            idx = data.index(name)
            data[idx + 1] = str(int(data[idx + 1]) + num)
        else:
            data += [name, str(num)]
    with open('test.txt', 'w') as fp:
        print('\n'.join(data))
        fp.write('\n'.join(data))


search('Oliver', -52)
0 голосов
/ 13 апреля 2020
# Vote for Rusty!
def f(name, number):
    with open('data.txt') as dt:
        lines = [line.rstrip('\n') for line in dt]

    names = lines[::2]
    numbers = [ int(n) for n in lines[1::2] ]

    try:
        i = names.index(name)
        numbers[i] += number
    except ValueError:
        names.append(name)
        numbers.append(number)

    with open('data.txt', 'w+') as dt:
        for i in range(len(names)):
            dt.write(names[i])
            dt.write('\n')
            dt.write(str(numbers[i]))
            dt.write('\n')
0 голосов
/ 13 апреля 2020

Этот скрипт должен быть тем, что вы хотите:

file=open('name_of_your_file.txt','r')

datas=file.readlines()
file.close()


def f(name,number):

    file=open('name_of_your_file.txt','w')
    newDatas=datas[:]

    if(name+'\n' not in datas):
        newDatas.append(name+'\n')
        newDatas.append(str(number)+'\n')

    else:
        index=datas.index(name+'\n')
        newNumber=number+int(datas[index+1])
        newDatas[index+1]=str(newNumber)+'\n'

    file.writelines(newDatas)


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