Как добавить числа в строку для цикла - PullRequest
0 голосов
/ 24 мая 2018

У меня есть длинный список пригородов, которые я хочу сделать с

У многих из них есть RDx (для сельской доставки), где x - это число от 1 до 30

Iхочу просто избавиться от гексогена, как показано ниже

for row in WorkingData['PatientSuburb']:
    if 'RD10' in str(row):
    WorkingData['PatientSuburb'].replace(regex=True,inplace=True,to_replace=r'RD10',value=r'')

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

for rd in range(1,31,1):
    if 'RD',rd in str(row):
    WorkingData['PatientSuburb'].replace(regex=True,inplace=True,to_replace=r'RD'rd ,value=r'')

Если я сделаю это, я получу вывод с пробелом между:

for rd in range(1,31,1):
    print 'RD',rd

вот так:

RD 1
RD 2
RD 3
RD 4
RD 5
RD 6
RD 7
RD 8
RD 9
RD 10
RD 11
RD 12

, а также мне нужно выяснить, как этот кусок будет работать ...

to_replace=r'RD'rd 

Я видел, как кто-то использовал знак% в маркировке графика изатем он вводит значение извне кавычек - но я не знаю, является ли это частью функции метки (я пробовал это, и это не сработало вообще) Это будет выглядеть так

to_replace=r'RD%' % rd 

Любая помощь в этом была бы велика, спасибо!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Даже если ваш вопрос касается зацикливания нескольких целых чисел для генерации строк, похоже, ваша проблема на самом деле больше подходит для регулярного выражения.

Это позволит вам захватывать несколько случаев в одном, без зацикливаниянад возможными значениями.

>>> import re
>>> RD_PATTERN = re.compile(r'RD[1-3]?[0-9]')
>>>
>>> def strip_rd(string):
...     return re.sub(RD_PATTERN, '', string)
...
>>>
>>> strip_rd('BlablahRD5')
'Blablah'
>>> strip_rd('BlablahRD5sometext')
'Blablahsometext'
>>> strip_rd('BlablahRD10sometext')
'Blablahsometext'
>>> strip_rd('BlablahRD25sometext')
'Blablahsometext'

Предоставленное мною регулярное выражение ни в коем случае не является твердым (например, оно соответствует RD0, даже если вы указали [1..30]), но вы можете создать такое, котороеподходит для вашего конкретного случая использования.Например, может иметь смысл проверить, что шаблон находится в конце строки, если это ожидается.

Кроме того, обратите внимание, что re.compile -ing шаблон не требуется (выможет дать строку шаблона напрямую), но так как вы упомянули, что у вас есть несколько строк, он будет более производительным.

0 голосов
/ 24 мая 2018

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

to_replace = 'RD%d' % i

'%' отмечает начало спецификатора.В приведенном выше примере «d» следует за «%», что означает размещение здесь десятичного числа со знаком.Это то же самое, что библиотечная функция «printf» в C. Если за «%» не следует ни один действительный символ преобразования, он ничего не изменит, независимо от того, что находится справа.

Подробнее ипримеры здесь: https://docs.python.org/3.6/library/stdtypes.html#printf-style-bytes-formatting

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