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

如何使用python过滤带条件的字符串,python,string,Python,String,我有这样的绳子 s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || San Francisco Bay Area' 如何使用python根据字符串中的关键字“CEO”过滤掉“Heisaaceo”部分,使其看起来像这样 output: 'Jacky Chan||Managing Director and General Partner, B Robotics || San Fra

我有这样的绳子

s ='Jacky Chan || He is a CEO ||Managing Director and General Partner, B Robotics || San Francisco Bay Area'
如何使用python根据字符串中的关键字“CEO”过滤掉“Heisaaceo”部分,使其看起来像这样

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

您可以拆分
| |
上的字符串,然后将其重新连接,排除该段。因此:

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)

如果我们使用分隔符
|
拆分字符串,我们可以检查每个拆分,并且仅当它不包含字符串
'CEO'
时才将其包含在新字符串中

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

看起来您正在使用
“| |”
作为字符串各部分之间的分隔符,因此请按该分隔符拆分字符串:

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

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

您可以查找
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

其他答案没有错,但为了完整起见,下面介绍了如何使用正则表达式。假定
|
仅用于定界

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))

您可以在中了解有关正则表达式的所有信息,包括特定于Python的位。

由于每个部分由
|
分隔,因此可以调用
s.split(“| |”)
,这将返回单独部分的列表。
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))