0

次のようなテキストファイルで式を見つける必要があります。StartTime="4/11/2013 8:11:20:965" and EndTime="4/11/2013 8:11:22:571"

だから私は正規表現を使用しました

r'(\w)="(\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{1,2}:\d{1,2}:\d{2,3})"'

以前に助けてくれた eumiro に再び感謝します (テキスト ファイルからランダムに整形済みのテキストを取得する)

しかし、ファイルに何も見つからないので、そこにあることを確認しました。

実際には「GetDuration lvl 1」を通過できません。

私は自分の正規表現を として単純化しようとしましたがr'(\d)'、それはレベル 4 まで機能したので、最終的に保護される可能性があると考えましたが"、python doc でこれについて何も見ませんでした。

何が欠けていますか?

Regular_Exp = r'(\w)="(\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{1,2}:\d{1,2}:\d{2,3})"'

def getDuration(timeCode1, timeCode2)
    duration =0
    c = ''
    print 'GetDuration lvl 0'
    for c in str(timeCode1) :
        m = re.search(Regular_Exp, c)
        print 'GetDuration lvl 1'

        if m:
            print 'GetDuration lvl 2'
            for text in str(timeCode2) :
                print 'GetDuration lvl 3'
                n = re.search(Regular_Exp, c)
                if n:
                    print 'GetDuration lvl 4'
                    timeCode1Split = timeCode1.split(' ')
                    timeCode1Date = timeCode1Split[0].split('/')
                    timeCode1Heure = timeCode1Split[1].split(':')

                    timeCode2Split = timeCode2.split(' ')
                    timeCode2Date = timeCode2Split[0].split('/')
                    timeCode2Heure = timeCode2Split[1].split(':')

                    timeCode1Date = dt.datetime(timeCode1Date[0], timeCode1Date[1], timeCode1Date[2], timeCode1Heure[0], timeCode1Heure[0], timeCode1Heure[0], tzinfo=utc)
                    timeCode2Date = dt.datetime(timeCode2Date[0], timeCode2Date[1], timeCode2Date[2], timeCode2Heure[0], timeCode2Heure[0], timeCode2Heure[0], tzinfo=utc)

                    print 'TimeCode'
                    print timeCode1Date
                    print timeCode2Date

                duration += timeCode1Date - timeCode2Date

    return duration
4

2 に答える 2

1
for c in str(timeCode1) :
    m = re.search(Regular_Exp, c)

    ...

for x in str(something)文字ごとに反復somethingしていることを意味し(一度に1文字= 1strの長さ)、正規表現はそれに一致できません。

于 2013-04-24T14:31:43.650 に答える
1

たぶん、この経験が役立つはずです:

"(\w+?)=\"(.+?)\""

使用するには:

>>> string = u'StartTime="4/11/2013 8:11:20:965" and EndTime="4/11/2013 8:11:22:571"'
>>> regex = re.compile("(\w+?)=\"(.+?)\"")
# Run findall
>>> regex.findall(string)
[(u'StartTime', u'4/11/2013 8:11:20:965'), (u'EndTime', u'4/11/2013 8:11:22:571')]

また、for c in str(timeCode1)印刷cしてみてください。一度に1文字ずつ行っています。正規表現ではお勧めできません..

于 2013-04-24T14:31:47.563 に答える