繁体   English   中英

首先检查文本中是否存在特定字符串 position

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM