如何使用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))