Добавление int к строке для каждого события - PullRequest
1 голос
/ 10 июля 2020

У меня есть этот список:

BJ;COTONOU;AAA-AAA-001;1.1.1.1;BJ;LI;Cotonou
BJ;COTONOU;AAA-AAA-001;2.2.2.2;BJ;LI;Cotonou

BJ;COTONOU;BBB-BBB-001;1.1.1.1;BJ;LI;Cotonou
BJ;COTONOU;BBB-BBB-001;2.2.2.2;BJ;LI;Cotonou

Я пытаюсь добавить в список "_" + n-й раз 'AAA-AAA-001'. Так что моей целью было бы иметь второй список с:

BJ;COTONOU;AAA-AAA-001_1;1.1.1.1;BJ;LI;Cotonou
BJ;COTONOU;AAA-AAA-001_2;2.2.2.2;BJ;LI;Cotonou

BJ;COTONOU;BBB-BBB-001_1;1.1.1.1;BJ;LI;Cotonou
BJ;COTONOU;BBB-BBB-001_2;2.2.2.2;BJ;LI;Cotonou

Здесь нужна помощь.

пока что у меня есть это:

with open('4.txt', 'r')as file1:
    read = csv.reader(file1, delimiter=";")
    for line in read :
        count = 1
        if line[2] in line:
            print(line[2] + "_" + str(count))
            count += 1

1 Ответ

1 голос
/ 10 июля 2020

Вам необходимо сбросить count обратно на 1 всякий раз, когда изменяется line[2]. Используйте переменную, чтобы сохранить ее предыдущее значение, и проверьте соответствие.

with open('4.txt', 'r')as file1:
    read = csv.reader(file1, delimiter=";")
    last = None
    for line in read :
        if line[2] != last:
            count = 1
            last = line[2]
        print(line[2] + "_" + str(count))
        count += 1

Этот код предполагает, что все строки для одного и того же line[2] находятся вместе в файле. Если нет, вам понадобится словарь, содержащий счетчик для каждого префикса.

Нет смысла в if line[2] in line: - как может элемент списка не быть в списке?

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