2017-07-27 52 views
0

过滤字符串的病情,我有串这样如何使用python

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

我怎么能过滤掉“他是一个CEO”基于关键字“CEO”在字符串中的部分看起来像这样使用python ?

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

由于每个部分之间用'||'分开,所以可以调用's.split('||')',这将返回一个单独部分的列表。 –

回答

2

如果我们使用的分隔符||分割字符串,我们可以检查每个拆分,并只将其包含在我们的新字符串中,如果它不是包含字符串'CEO'

'||'.join(substr for substr in s.split('||') if 'CEO' not in substr) 
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) 
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

看起来你正在使用"||"为您的字符串的部分之间的分隔符,这样通过分隔符分割你的字符串:

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

你可以找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 
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特有的位。