特定の単語「.c:」の後のすべての単語、数字、16進数を削除したい
私のラインはそのようなものです-
line = "Bags has a price.c:123
line = "Bags has a price.c:543ea
私は次のことを試しました:
d = re.sub(r'[.c:\W+]', '', c)
しかし、それは正しい答えを与えていません、出力は次のようになります:
output: Bags has a price
>>> line = "Bags has a price.c:123"
>>> line.split(':')[0]
'Bags has a price.c'
>>> line.split('.c')[0]
'Bags has a price'
>>> line = "Bags has a price.c:123"
>>> ''.join(line.partition('.c')[:2])
'Bags has a price.c'
そして、単純なインデックスルックアップを使用するだけです。
>>> line = "Bags has a price.c:543ea"
>>> after_word = ".c"
>>> cleaned_line = line[:line.index(after_word) + len(after_word) ]
>>> cleaned_line
Bags has a price.c
除外する.c
には、+ len(after_word)
正規表現を使用する必要がある場合 - 明らかに使用しないでください。あなたはこれを行うことができました:
re.sub(r'\.c:.*?$','', line)
正規表現を回避できる場合は、そうしてください。分割を使用するよりもはるかに遅くなる可能性があります。