python中if跳转不到elif?

2019-06-28  本文已影响0人  全村希望gone

原数据集

高 B-NAME
勇 I-NAME
: O
男 O
, O
中 B-CONT
国 I-CONT
国 I-CONT
籍 I-CONT
, O
无 O
境 O
外 O
居 O
留 O
权 O
, O

1 O
9 O
6 O
6 O
年 O
出 O
生 O
, O
汉 B-RACE
族 I-RACE
, O
中 B-TITLE
共 I-TITLE
党 I-TITLE
员 I-TITLE
, O
本 B-EDU
科 I-EDU
学 I-EDU
历 I-EDU
, O
工 B-TITLE
程 I-TITLE
师 I-TITLE
、 O
美 B-ORG
国 I-ORG
项 I-ORG
目 I-ORG
管 I-ORG
理 I-ORG
协 I-ORG
会 I-ORG
注 B-TITLE
册 I-TITLE
会 I-TITLE
员 I-TITLE
( O
P B-TITLE
M I-TITLE
I I-TITLE
M I-TITLE
e I-TITLE
m I-TITLE
b I-TITLE
e I-TITLE
r I-TITLE
) O
、 O
注 B-TITLE
册 I-TITLE
项 I-TITLE
目 I-TITLE
管 I-TITLE
理 I-TITLE
专 I-TITLE
家 I-TITLE
( O
P B-TITLE
M I-TITLE
P I-TITLE
) O
、 O
项 B-TITLE
目 I-TITLE
经 I-TITLE
理 I-TITLE
。 O

想要的数据集

高 B-NAME NAME
勇 I-NAME NAME
: O O
男 O O
, O O
中 B-CONT CONT
国 I-CONT CONT
国 I-CONT CONT
籍 I-CONT CONT
, O O
无 O O
境 O O
外 O O
居 O O
留 O O
权 O O
, O O

1 O O
9 O O
6 O O
6 O O
年 O O
出 O O
生 O O
, O O
汉 B-RACE RACE
族 I-RACE RACE
, O O
中 B-TITLE TITLE
共 I-TITLE TITLE
党 I-TITLE TITLE
员 I-TITLE TITLE
, O O
本 B-EDU
科 I-EDU
学 I-EDU
历 I-EDU
, O O
工 B-TITLE TITLE
程 I-TITLE TITLE
师 I-TITLE TITLE
、 O O
美 B-ORG ORG
国 I-ORG ORG
项 I-ORG ORG
目 I-ORG ORG
管 I-ORG ORG
理 I-ORG ORG
协 I-ORG ORG
会 I-ORG ORG
注 B-TITLE TITLE
册 I-TITLE TITLE
会 I-TITLE TITLE
员 I-TITLE TITLE
( O O
P B-TITLE TITLE
M I-TITLE TITLE
I I-TITLE TITLE
M I-TITLE TITLE
e I-TITLE TITLE
m I-TITLE TITLE
b I-TITLE TITLE
e I-TITLE TITLE
r I-TITLE TITLE
) O O
、 O O
注 B-TITLE TITLE
册 I-TITLE TITLE
项 I-TITLE TITLE
目 I-TITLE TITLE
管 I-TITLE TITLE
理 I-TITLE TITLE
专 I-TITLE TITLE
家 I-TITLE TITLE
( O O
P B-TITLE TITLE
M I-TITLE TITLE
P I-TITLE TITLE
) O O
、 O O
项 B-TITLE TITLE
目 I-TITLE TITLE
经 I-TITLE TITLE
理 I-TITLE TITLE
。 O O

先上代码

file = open('2.txt', 'w+', encoding='utf-8')
with open('3.txt', encoding='utf-8') as f:
    for line in f:
        line_list = line.strip()
        if line_list.find('NAME') :
            file.write(line_list + ' ' + "NAME" + '\n')
        elif line_list.find('TITLE') :
            file.write(line_list + ' ' + "TITLE" + '\n')
        elif line_list.find('CONT'):
            file.write(line_list + ' ' + "CONT" + '\n')
        elif line_list.find('RACE'):
            file.write(line_list + ' ' + "RACE" + '\n')
        elif line_list.find('ORG'):
            file.write(line_list + ' ' + "ORG" + '\n')
        elif line_list.find('O'):
            file.write(line_list + ' ' + 'O' + '\n')
        else:
            file.write(line_list + '\n')

我本来以为上面的代码肯定可以得到想要的数据集,结果效果是这样的

高 B-NAME NAME
勇 I-NAME NAME
: O NAME
男 O NAME
, O NAME
中 B-CONT NAME
国 I-CONT NAME
国 I-CONT NAME
籍 I-CONT NAME
, O NAME
无 O NAME
境 O NAME
外 O NAME
居 O NAME
留 O NAME
权 O NAME
, O NAME
 NAME
1 O NAME
9 O NAME
6 O NAME
6 O NAME
年 O NAME
出 O NAME
生 O NAME
, O NAME
汉 B-RACE NAME
族 I-RACE NAME
, O NAME
中 B-TITLE NAME
共 I-TITLE NAME
党 I-TITLE NAME
员 I-TITLE NAME
, O NAME
本 B-EDU NAME
科 I-EDU NAME
学 I-EDU NAME
历 I-EDU NAME
, O NAME
工 B-TITLE NAME
程 I-TITLE NAME
师 I-TITLE NAME
、 O NAME
美 B-ORG NAME
国 I-ORG NAME
项 I-ORG NAME
目 I-ORG NAME
管 I-ORG NAME
理 I-ORG NAME
协 I-ORG NAME
会 I-ORG NAME
注 B-TITLE NAME
册 I-TITLE NAME
会 I-TITLE NAME
员 I-TITLE NAME
( O NAME
P B-TITLE NAME
M I-TITLE NAME
I I-TITLE NAME
M I-TITLE NAME
e I-TITLE NAME
m I-TITLE NAME
b I-TITLE NAME
e I-TITLE NAME
r I-TITLE NAME
) O NAME
、 O NAME
注 B-TITLE NAME
册 I-TITLE NAME
项 I-TITLE NAME
目 I-TITLE NAME
管 I-TITLE NAME
理 I-TITLE NAME
专 I-TITLE NAME
家 I-TITLE NAME
( O NAME
P B-TITLE NAME
M I-TITLE NAME
P I-TITLE NAME
) O NAME
、 O NAME
项 B-TITLE NAME
目 I-TITLE NAME
经 I-TITLE NAME
理 I-TITLE NAME

发现判断语句一直在第一个if那里,跳不出来,于是查询了一下if的用法“if语句中的条件表达式求值为0或FALSE值时,则执行else语句中的代码块。”
而find(str)的用法是“若找到str,则返回str初始的位置,若未找到,则返回-1。”,注意:是-1,所以跳不出来,只要把代码改成下面这样就可以了。

file = open('3.txt', 'w+', encoding='utf-8')
with open('2.txt', encoding='utf-8') as f:
    for line in f:
        line_list = line.strip()
        if line_list.find('NAME') != -1:
            file.write(line_list + ' ' + "NAME" + '\n')
        elif line_list.find('TITLE') != -1:
            file.write(line_list + ' ' + "TITLE" + '\n')
        elif line_list.find('CONT') != -1:
            file.write(line_list + ' ' + "CONT" + '\n')
        elif line_list.find('RACE') != -1:
            file.write(line_list + ' ' + "RACE" + '\n')
        elif line_list.find('ORG') != -1:
            file.write(line_list + ' ' + "ORG" + '\n')
        elif line_list.find('O') != -1:
            file.write(line_list + ' ' + 'O' + '\n')
        else:
            file.write(line_list + '\n')
上一篇下一篇

猜你喜欢

热点阅读