字符串我有一个列表:的Python如何打印包含数字
var = ["renderPass1", "renderPass2","renderPass3", "renderPassFilter", "renderPassSets"]
我怎么只打印renderPass1,renederPass2等,我的意思是,以后只打印包含多个成员“renderPass”
字符串我有一个列表:的Python如何打印包含数字
var = ["renderPass1", "renderPass2","renderPass3", "renderPassFilter", "renderPassSets"]
我怎么只打印renderPass1,renederPass2等,我的意思是,以后只打印包含多个成员“renderPass”
使用正则表达式来查找数字。
检查python库:Python: Re。你会想看看“\ d”。
一个工具,可以帮助我很多正则表达式是Txt to Regex。你只需放入你想要匹配的字符串并用GUI构建正则表达式。然后它为您提供下面的代码。
提及正则表达式+1。在python中的一个例子会很有趣:-) – Nico
根据您对列表中的内容知道多少选择一个。
打印头3
print var[:3]
印刷与图案renderPass
任何名称后跟数字
print [name for name in var if name.startswith('renderPass') and name[9].isdigit()]
打印以数字任何名称的任意位置在它
print [name for name in var if any(ch.isdigit() for ch in name)]
for value in var:
if value[-1].isdigit(): # check if last char is a number
print value
现在如果y OU要测试的字符串“renderPass”
for value in var:
if 'renderPass' in value and value[-1].isdigit()
print value
for name in var:
try:
float(name[len("renderPass"):])
print name
except ValueError, er:
# does not have a number after renderPass -> do nothing
pass
我给出两个答案,因为你的问题是没有什么被认为是匹配的太清楚。
这是因为如果该号码的位置是不相关:
>>> var = ["renderPass1", "renderPass2","renderPass3", "renderPassFilter", "renderPassSets"]
>>> [x for x in var if any(c.isdigit() for c in x)]
['renderPass1', 'renderPass2', 'renderPass3']
>>>
这是因为如果该号码有"renderPass"
后前来:
>>> from re import search
>>> # I altered the values in here so I could demonstrate
>>> var = ["renderPass1", "renderPass2","renderPass3", "1renderPassFilter", "1renderPassSets"]
>>> [x for x in var if search("renderPass.*\d", x)]
['renderPass1', 'renderPass2', 'renderPass3']
>>>
假设你只需要与“SomeTextNumber”的模式,你可以这样写
[x for x in var if re.match("\w+\d$", x)]
import re
p = re.compile("[0-9]$")
for s in var:
if p.search(s): print s
你是说包含数字或字符串的字符串包含数字_after_'“renderPass”吗?换句话说,这个数字的位置是否相关? – iCodez
其实他们俩。所有答案都非常有用,而且彼此不同。正则表达式非常有用。 – iRex