0

解析したいURLのリストがあります:

['https://www.richmondfed.org/-/media/richmondfedorg/press_room/speeches/president_jeff_lacker/2017/pdf/lacker_speech_20170303.pdf','http://www.federalreserve.gov/newsevents/speech/powell20160929a.htm','http://www.federalreserve.gov/newsevents/speech/fischer20161005a.htm']

正規表現を使用して、文字列の末尾の数字と句読点の前の文字を含む新しいリストを作成したいと考えています (上記のリストの最初の文字列が示すように、一部の文字列には 2 つの位置に数字が含まれています)。したがって、新しいリストは次のようになります。

['20170303', '20160929a', '20161005a']

これは私が運がないことを試したものです:

code = re.search(r'?[0-9a-z]*', urls)

アップデート:

ランニング -

[re.search(r'(\d+)\D+$', url).group(1) for url in urls]

次のエラーが表示されます-

AttributeError: 'NoneType' object has no attribute 'group'

また、文字がある場合、これは数字の後に文字をピックアップするようには見えません..!

4

4 に答える 4

0

与えられた:

>>> lios=['https://www.richmondfed.org/-/media/richmondfedorg/press_room/speeches/president_jeff_lacker/2017/pdf/lacker_speech_20170303.pdf','http://www.federalreserve.gov/newsevents/speech/powell20160929a.htm','http://www.federalreserve.gov/newsevents/speech/fischer20161005a.htm']

できるよ:

for s in lios:
    m=re.search(r'(\d+\w*)\D+$', s)
    if m:
        print m.group(1)

版画:

20170303
20160929a
20161005a

これは、この正規表現に基づいています:

(\d+\w*)\D+$
  ^              digits
     ^           any non digits
        ^        non digits
           ^     end of string
于 2017-06-23T16:47:22.803 に答える