Python 在值中使用*字符进行If语句筛选
我使用以下代码迭代数据帧:Python 在值中使用*字符进行If语句筛选,python,Python,我使用以下代码迭代数据帧: print(access_df) Out: ActionAccess Arn 0 s3:* a--... 1 xray:PutTele b--... 2 s3:*MultipartUpload* c--... 3
print(access_df)
Out:
ActionAccess Arn
0 s3:* a--...
1 xray:PutTele b--...
2 s3:*MultipartUpload* c--...
3 xray:GetSamplingTargets d--...
for index, row in access_df.iterrows():
if 's3:*' in row['ActionAccess']:
print(row)
我正在尝试获取仅为s3::
的值。但是,上面的代码还检测到诸如s3:*对象
和s3:*多端口加载*
等情况
如何定义if语句以仅获取只包含
s3:
的值?不确定我是否真的理解了这个问题,但是如果您只想检查字符串是否是字面上的's3:*
,即*
不应该是某种占位符/通配符,请使用=
:
if 's3:*' == row['ActionAccess']:
如果您要将
's3:*'
(但不是's3:*stuff*'
)作为较大字符串的一部分,例如“某些字符串中包含s3:*”
,则可以使用str.split
或使用正则表达式。您可以使用内置的正则表达式模块。然后,您的代码可以如下所示
import re
# import other libraries like pandas that you use
for index, row in access_df.iterrows():
if bool(re.match(r'(s3:\*)',row['ActionAcess'])):
print(row)
这将使字符串与s3:*匹配。使用Bool是为了在if语句中使用布尔值
您可以在上玩regex语句,看看它将如何运行
编辑:从字符串开始重新匹配匹配项,而不是在字符串中的任何位置。您想对“s3:*”做什么?“我如何定义if语句以仅获取“s3:*”的值?”您是否尝试过在中使用
=
而不是?我们应该知道要回答的行['ActionAccess']
的类型。显然,它重新定义了
(via)中的,我认为在这种情况下,这个问题有点不清楚,也许我读得不对。我认为它需要一个抱歉的@costaparas,你是对的,这保持了同样的问题<代码>s3:*bla
也将匹配。。。也许r's3:\*$
就可以了,但这只是对==
的过度使用……顺便说一句,它在任何地方都不匹配re.match
仅从字符串开头匹配。如果您想在任何地方匹配,请使用re.search
我认为这里需要的是平等,而不是正则表达式。