bugfix> python > 投稿

私は次のコードを持っています、私がやろうとしていることは、text_to_searchから入力を受け取ると、それが命令であるか、命令(ID)ではない単語であるか、演算子であるかを見つけることです命令が見つかった場合は遠くまで表示されますが、ID部分では、たとえばjajaの代わりにSetが表示されます。

text_to_search="Set Sets UnionShowSets jaja:={hi};"
import re
      t=re.search(r'Sets?|ShowSet|ShowSets|Union|Intersect|SetUnion|SetIntersect',text_to_search)
    s=re.search(r':=|{|}|;',text_to_search)
    d=t=re.search(r'[a-zA-Z0-9]+',text_to_search)
    if t:
        print("Instruction: ")
        print(t)
    else:
        print("ID: ")
        print(d)
    if s:
        print("Operator: ")
        print(s)

印刷結果:

Instruction: 
<_sre.SRE_Match object; span=(0, 3), match='Set'>
Operator: 
<_sre.SRE_Match object; span=(27, 29), match=':='>

希望する印刷結果:

Instruction: 
    <_sre.SRE_Match object; span=(0, 3), match='Set'>
Instruction: 
    <_sre.SRE_Match object; span=(0, 3), match='Sets'>
Instruction: 
    <_sre.SRE_Match object; span=(0, 3), match='Union'>
Instruction: 
    <_sre.SRE_Match object; span=(0, 3), match='ShowSets'>
ID: 
    <_sre.SRE_Match object; span=(0, 3), match='jaja'>
ID: 
    <_sre.SRE_Match object; span=(0, 3), match='hi'>
Operator: 
    <_sre.SRE_Match object; span=(0, 3), match='{'>
Operator: 
    <_sre.SRE_Match object; span=(0, 3), match='}'>
Operator: 
<_sre.SRE_Match object; span=(27, 29), match=':='>
Operator: 
<_sre.SRE_Match object; span=(27, 29), match=';'>

回答 1 件
  • もう一度印刷したくない要素をリストに保存するだけで修正しました。

    text_to_search="Set Sets UnionShowSets jaja:={hola};"
    import re
    x=[]
    for match in re.finditer('Sets?|ShowSet|ShowSets|Union|Intersect|SetUnion|SetIntersect',text_to_search):
        print("Instruccion: ")
        print(match)
        x.append(match)
    for match in re.finditer(r':=|{|}|;',text_to_search):
        print("Operador: ")
        print(match)
    for match in re.finditer(r'[a-zA-Z0-9]+',text_to_search):
        if match in x:
            continue
        else:
            print("ID: ")
            print(match)
    
    

あなたの答え