3

特定の単語「.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
4

4 に答える 4

5
>>> line = "Bags has a price.c:123"
>>> line.split(':')[0]
'Bags has a price.c'
>>> line.split('.c')[0]
'Bags has a price'
于 2012-12-20T07:09:01.300 に答える
2
>>> line = "Bags has a price.c:123"
>>> ''.join(line.partition('.c')[:2])
'Bags has a price.c'
于 2012-12-20T07:01:18.490 に答える
0

そして、単純なインデックスルックアップを使用するだけです。

>>> 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)

于 2012-12-20T07:59:05.857 に答える
0

正規表現を使用する必要がある場合 - 明らかに使用しないでください。あなたはこれを行うことができました:

re.sub(r'\.c:.*?$','', line)

正規表現を回避できる場合は、そうしてください。分割を使用するよりもはるかに遅くなる可能性があります。

于 2012-12-20T07:26:34.740 に答える