我有这样的字符串
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'
答案 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