如何使用python过滤条件的字符串

时间:2017-07-27 23:38:43

标签: python string

我有这样的字符串

s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || San Francisco Bay Area'

如何过滤"他是首席执行官"部分基于关键字" CEO"在字符串中使用python看起来像这样?

output:
'Jacky Chan||Managing Director and General Partner, B Robotics || San Francisco Bay Area'

6 个答案:

答案 0 :(得分:3)

看起来您使用"||"作为字符串部分之间的分隔符,因此请使用该分隔符拆分字符串:

parts = s.split("||")

然后你说"CEO"是一个过滤掉部分的关键字,所以要让每个部分都没有"CEO"

filtered = [part for part in parts if "CEO" not in part]

最后,把它重新组合在一起:

output = "||".join(filtered)

现在你得到了

>>> print output
Jacky Chan ||Managing Director and General Partner, B Robotics || San Francisco Bay Area

我认为您发布的输出间隔不正确。如果没有,那么,还有其他事要做。你必须为我澄清。

答案 1 :(得分:3)

其他答案没有错,但为了完整起见,您可以通过正则表达式来实现。假设| 用于分隔。

import re
s ='Jacky Chan || He is a CEO || Managing Director and General Partner, B Robotics || San Francisco Bay Area'
print(re.sub(r'\|\|[^|]*CEO[^|]*\|\|', '||', s))

您可以在the documentation中了解正则表达式的所有内容,包括特定于Python的位。

答案 2 :(得分:2)

s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || San Francisco Bay Area'
y = "||".join([a for a in s.split("||") if not 'CEO' in a])
print(y)

答案 3 :(得分:2)

如果我们使用分隔符||拆分字符串,我们可以检查每个分割,只有当包含字符串'CEO'时才将它包含在我们的新字符串中。

'||'.join(substr for substr in s.split('||') if 'CEO' not in substr)

答案 4 :(得分:1)

您可以在||上拆分字符串,然后重新加入,不包括该细分。所以:

s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || San Francisco Bay Area'

s = s.split('||')

s = '||'.join(x for x in s if 'CEO' not in x)

并将它们放在一起以便理解:

'||'.join(x for x in s.split('||') if 'CEO' not in x)

这里也是正则表达式版本:

re.sub(r'\|\|[A-z\s]*[CEO]+[A-z\s]*\|\|', "||", s)

答案 5 :(得分:1)

您可以查找CEO并删除包含它的||分隔符之间的所有内容,例如:

s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || ' \
   'San Francisco Bay Area'

index = s.find("CEO")  # or any other string
if index != -1:  # string found
    replaced = s[:s.rfind("||", 0, index)] + s[s.find("||", index):]
    print(replaced)

# Jacky Chan ||Managing Director and General Partner, B Robotics || San Francisco Bay Area