在字符串中搜索唯一的单词

时间:2016-06-02 02:15:18

标签: python

我几乎编写了一个可以在GEDCOM文件上执行多项任务的程序(包含家谱信息的文件)。

我只面对一个问题;有一些这样的行:

0 @F8@ FAM
1 FAMC @F5@
1 FAMS @F5@

现在我想提取从@开始并以@。

结尾的代码

我用过:

 if 'FAM' in line:
     var = line[1:6]
     ...

但是当我运行该程序时,它会输出FAMCFAMS的所有行,因为这些单词中包含FAM

如何仅提取仅与FAM匹配的行?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式(字边界)和re.search()

来执行此操作
lines = [
    "0 @F8@ FAM",
    "1 FAMC @F5@",
    "1 FAMS @F5@"
]

for line in lines:
    if re.search(r'\bFAM\b', line):
        var = line
        print var

“单词边界”(\b)标记单词的开头或结尾。

我们也可以使用re.search()同时提取家庭代码:

for line in lines:
    search = re.search(r'@([A-Z0-9]+)@\s*\bFAM\b', line)
    if search:
        code = search.group(1)
        print code

答案 1 :(得分:0)

你可以用这个:

  for l in lines:
    for a in l:
      if(a[0]=="@" and a[-1]=="@"):
        print(a)