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
我认为这里需要的是平等,而不是正则表达式。