-1

膨大な数の URL を含むテキスト ファイルを取得しましたが、最後にタイムスタンプがあり、冗長です。

    http://techcrunch.com/2012/02/10/vevo-ceo-tries-to-explain-their-hypocritical-act-of-piracy-at-sundance/)16:55:40
    http://techcrunch.com/2012/04/30/edmodo-hits-7m/)15:18:45

Pythonで正規表現を使用するとそれを取り除くのに役立つと考えていましたが、同時にPython split and replace、最後にタイムスタンプを削除できる操作を使用でき、以下のURLに似た出力が得られます

    >>> url.split(")")[0]
    http://techcrunch.com/2012/04/30/edmodo-hits-7m

さて、私の質問は、空間と時間の両方の点で正規表現スタイルまたは python 文字列メソッドの方がパフォーマンスが優れているか、または他のより良い方法がありますか。

4

5 に答える 5

1

私はそのようなタスクにRegExを使用しません。それは簡単すぎます

for line in lines:
    print line.split(')')[0]

またはurl含まれている場合)

for line in lines:
    print ')'.join(line.split(')')[:-1])
于 2013-07-24T21:04:37.367 に答える
0

これは、すべての行をループするよりも高速です。

import re

my_str = "http://techcrunch.com/2012/04/30/edmodo-hits-7m/)15:18:45"
re.findall(r'([\w./:\d-]+)/\)\d\d:\d\d:\d\d', my_str)
于 2013-07-24T21:07:50.903 に答える
0

削除したい部分の長さが固定されている場合、なぜ

L[:-9]

?

Python ではL[a:b]、L (リスト、文字列、タプル) のインデックスからインデックスまでの部分 (除外) を意味しaますb

aを省略した場合は最初から、b負の場合は最後から数えることを意味します。

Soは「最後の 9 つの要素以外のL[:-9]すべて」を意味します。L

于 2013-07-24T21:14:59.900 に答える
0

別の可能性:

for line in lines:
    url = line.rsplit('/', 1)[0]
于 2013-07-24T21:11:07.283 に答える