瞄准由竖线分隔的单词 Python

Aim at words separated by a vertical line Python

我有一个包含这一行的文本文件。

 NAME                     = DE: NAME_DE |EN: NAME EN (EXAMPLE) |IT: NAME, IT

我想通过列表来定位三种语言的名字。 这是我的方法,但不幸的是我找不到只针对这三个词的方法:

materialfile_obj = open (material_dict["Old_plaster"], 'r',encoding = 'latin-1')
materialfile = materialfile_obj.readlines()
flag_name = 0
for i in range(len(materialfile)):
    if  "NAME" in materialfile[i] and "="  in materialfile[i]:
        line_name = i
        flag_name = 1
if flag_name == 1:
    names = materialfile[line_name].split(" = ")[1].split()
if names:
    for name in names:
        try:
             Name_groups[name].append(All)
        except Exception:
             Name_groups[name] = [All]
else:
    try:
         Name_groups["No_value"].append(All)
    except Exception:
         Name_groups["No_value"] = [All]
materialfile_obj.close()

通过这种方式,我得到了每个出现的单词的列表,但我不能只定位名称。

使用正则表达式,您可以在一行中搜索 :| 之间的子字符串。

import re

s = 'NAME                     = DE: NAME_DE |EN: NAME EN (EXAMPLE) |IT: NAME, IT'
s += '|' # add pipe to find strings between : and |
names = re.findall(':(.*?)[|]', s)
print(names)