如何将数字添加到字符串中进行循环

2024-09-30 04:39:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一长串我想做点什么的郊区

他们中的很多人都有RDx(农村交货),其中x是1到30之间的数字

我只想摆脱RDx如下

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 

我见过有人使用%符号标记绘图,然后它从引号外引入一个值-但我不知道这是否是label函数的一部分(我确实尝试过,但根本不起作用) 看起来像这样

to_replace=r'RD%' % rd 

任何帮助都会很好谢谢!你知道吗


Tags: tointrueforif数字rdreplace
2条回答

如果您想使用for循环并用索引替换子字符串,那么我会说您就快到了。你知道吗

to_replace = 'RD%d' % i

“%”标记说明符的开头。在上面的例子中,“d”跟在“%”后面,意思是在这里放一个有符号的整数十进制。它与C中的“printf”库函数相同。如果“%”后面没有任何有效的转换字符,则无论右边是什么,它都不会更改任何内容。你知道吗

更多细节和示例:https://docs.python.org/3.6/library/stdtypes.html#printf-style-bytes-formatting

即使您的问题是关于循环几个整数以生成字符串,但您的问题似乎更适合正则表达式。你知道吗

这将允许您在一个案例中捕获多个案例,而不必遍历可能的值。你知道吗

>>> 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模式不是必需的(您可以直接给出模式字符串),但是由于您提到您有几行,因此它的性能会更好。你知道吗

相关问题 更多 >

    热门问题