Заменить каждый '$' в длинной строке числом от 1 до 165 путаницы? - PullRequest
0 голосов
/ 20 марта 2020

Моя цель: у меня есть очень длинная строка, которая выглядит следующим образом:

longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'

И так далее. Это html для выбора аудио брендов, и предполагается, что «значение параметра» взять число от 1 до того, что в конечном итоге выглядит так:

longStr = '<option value = "1">A/D/S (Pre-ADST)</option><option value = "2">Aiwa</option><option value = "3">Alphard Audio</option><option value = "4">Alphasonik</option><option value = "5">Alpine</option><option value = "6">Altec Lansing</option><option value = "7">Alumapro</option><option value = "9">American Bass</option><option value = "10">American HiFi</option>........' 

Опять, так далее и так далее.

Итак, я начал с замены всех символов "#" с $, чтобы я мог как-то снова l oop через строку теперь заменить каждый $ на число от 1 -165 (например, l oop до первого $ и заменить его на «1», продолжать до следующий «$» и замените его на «2» и т. д. Я перепробовал все, но не могу найти правильный результат. Любая помощь будет признательна !! Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Ale c ответ идеален, однако, если вы хотите гораздо более простой ответ:

Вы можете использовать для l oop и go через каждый отдельный символ в строке, и проверьте, является ли это "$". Затем вы можете заменить это с помощью str.replace(old,new,count).

Вот реализация кода:

longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'
count = 0
for i in longStr:
    if i == "$":
        count += 1
        replace = "\""+ str(count) + "\""
        longStr = longStr.replace('$',str(count),1)
print(longStr)

Извините, ранее допустили ошибку.

0 голосов
/ 20 марта 2020

Вы можете разбить строку на «$» и заполнить значения при переборе списка. Затем объединить с str.join

longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'

x = ''.join(f'{v}"{i+1}"' for i, v in enumerate(longStr.split('$')))
print(x)
...