Как добавить целую итерацию в строку в Python? - PullRequest
0 голосов
/ 25 сентября 2018

Так что это моя проблема:

сначала я итерирую

for i in range(1,21):
    print (i)

затем у меня есть переменная basename = "Station"

Я хочу результат, где выводэто Station_1.txt, Station_2.txt и т. д.

Мне удалось добавить «_» к базовому имени переменной, например

mylist1 = ("_")
s = (basename)
for item in mylist1:
    s += item

, но теперь у меня возникла проблема с получением итерацииповерх переменной basename я мог бы получить ее как «Station_, 1, Station_, 2», но не внутри самой строки.

Извините, новичок здесь:)

Ответы [ 5 ]

0 голосов
/ 25 сентября 2018

Объединение строк лучше избегать, если это возможно.Альтернативой является то, что Python теперь поддерживает строки форматирования с префиксом f, который можно использовать для решения вашей проблемы следующим образом:

base_string = 'Station'

for i in range(1, 21):
    print(f'{base_string}_{i}.txt')    

Это было добавлено в Python 3.6.Также может быть полезно обнулить строки, чтобы гарантировать правильную сортировку строк:

base_string = 'Station'

for i in range(1, 21):
    print(f'{base_string}_{i:02}.txt')

Это даст вам:

Station_01.txt
Station_02.txt
Station_03.txt
Station_04.txt
Station_05.txt
Station_06.txt
Station_07.txt
Station_08.txt
Station_09.txt
Station_10.txt
Station_11.txt
Station_12.txt
Station_13.txt
Station_14.txt
Station_15.txt
Station_16.txt
Station_17.txt
Station_18.txt
Station_19.txt
Station_20.txt
0 голосов
/ 25 сентября 2018

Вы можете сделать это в одну строку!Попробуйте следующее:

basename = "Station"
result = ["{}_{}.txt".format(basename, i) for i in range(1, 21)]
print(result)`

 >> ['Station_1.txt','Station_2.txt','Station_3.txt', 
     'Station_4.txt','Station_5.txt','Station_6.txt', 
     'Station_7.txt','Station_8.txt','Station_9.txt', 
     'Station_10.txt','Station_11.txt',Station_12.txt',
     'Station_13.txt','Station_14.txt','Station_15.txt',
     'Station_16.txt','Station_17.txt','Station_18.txt',
     'Station_19.txt','Station_20.txt']`
0 голосов
/ 25 сентября 2018

Я бы использовал .format().См. https://docs.python.org/3.3/library/stdtypes.html#str.format

Например:

base_string = 'Station'
for i in range(1,21):
    print('{}_{}.txt'.format(base_string, i))
0 голосов
/ 25 сентября 2018

Вы можете использовать форматирование строки, чтобы забыть о беспокойстве о целых числах

Вы по-прежнему зацикливаетесь с числом в качестве параметра и сохраняете базовое имя таким же:

base = 'Station'
for i in range(1, 21):
    name = '{}_{}.txt'.format(base, i)
    print(name)  # or do whatever with 'name'
0 голосов
/ 25 сентября 2018

Хотите что-то подобное?

basename = "Station"
for i in range(1, 21):
    value = basename + "_" + str(i) + ".txt"
    print(value)

вывод:

Station_1.txt
Station_2.txt
Station_3.txt
Station_4.txt
Station_5.txt
Station_6.txt
Station_7.txt
Station_8.txt
Station_9.txt
Station_10.txt
Station_11.txt
Station_12.txt
Station_13.txt
Station_14.txt
Station_15.txt
Station_16.txt
Station_17.txt
Station_18.txt
Station_19.txt
Station_20.txt
...