![](/img/trans.png)
[英]How to check if the characters in the corresponding positions in the second string are repeating in same position like in first string? Educative EXAM
[英]Check if particular string exist in text either at first or second position
我试图在数据框“名称”的整个列中找到字符串列表。 如果第一个或第二个 position 存在特定字符串,则它应该用该特定字符串替换列的文本值并将其存储在另一列中。
为此,我正在使用正则表达式。 下面是我的代码。 但是,在 output 表中,我将“MEDICO SYSTEMS FUJI”匹配为“FUJI”,但我的要求是它存在于第 3 个 position,它应该返回“NA”。 类似地,文本“SAFEAIR TERM LTD CONTRACTORS”匹配为“LTD CONTRACTORS”。 它应该显示 NA,因为 position 是第三位。
请从现有脚本和我想要的 output 表中检查我当前的 output 表。
df = pd.DataFrame({'Name': ['KK FUJI PARLIGHT','NORTHWINDS ABATEMENT LLC',
'SAFEAIR TERM LTD CONTRACTORS','MEDICO SYSTEMS FUJI','TOKAI','FUJI CONTRACTOR']})
strings = ['FUJI','NORTHWINDS ABATEMENT','LTD CONTRACTORS']
pattern = '|'.join(strings)
def pattern_searcher(search_str:str, search_list:str):
search_obj = re.search(re.compile(r'\b({0})\b'.format(search_list),flags=re.IGNORECASE), search_str)
if search_obj :
return_str = search_str[search_obj.start(): search_obj.end()]
else:
return_str = 'NA'
return return_str
df['matched_str'] = df['Name'].apply(lambda x: pattern_searcher(search_str=x, search_list=pattern))
当前output:
Name matched_str
KK FUJI PARLIGHT FUJI
NORTHWINDS ABATEMENT LLC NORTHWINDS ABATEMENT
SAFEAIR TERM LTD CONTRACTORS LTD CONTRACTORS
MEDICO SYSTEMS FUJI FUJI
TOKAI NA
FUJI CONTRACTOR FUJI
所需的 output:
Name matched_str
KK FUJI PARLIGHT FUJI
NORTHWINDS ABATEMENT LLC NORTHWINDS ABATEMENT
SAFEAIR TERM LTD CONTRACTORS NA
MEDICO SYSTEMS FUJI NA
TOKAI NA
FUJI CONTRACTOR FUJI
def trim_replace(sequence, target, replacement, n=2):
return [val if val != target else replacement for val in sequence.split()[:n]]
target_value = "TOP"
sequence = "BEA TOP LIST"
result = replace_in_first(sequence, target_value, "REPLACED")
print(result)
Output:
['BEA', 'REPLACED']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.