2
  • 入力:- A89456FRERT120108A.1
  • 期待される出力:- 120108AT.1

私は以下のことを考えています...これを達成するためのより簡単な方法があれば誰でも助けてくれますか?英数字に「T」を追加する必要があります

  1. 「。」に基づいて分割します。
  2. 最初の数字が検出されたら、`split[0]` の英数字を取得します (この場合は "120108A")。
  3. #2に「T」を追加(120108ATになります)
  4. それから `split[1]` を戻す (120108AT.1)
4

1 に答える 1

4

これは、提供したものと同じロジックを使用しようとする正規表現ソリューションです。

import re
new_string = re.sub(r'^.*?(\d+\D*)(\..*)', r'\1T\2', orig_string)

例:

>>> re.sub(r'^.*?(\d+\D*)(\..*)', r'\1T\2', 'A89456FRERT120108A.1')
'120108AT.1'

説明:

#regex:
    ^            # match at the start of the string
    .*?          # match any number of any character (as few as possible)
    (            # start capture group 1
      \d+          # match one or more digits
      \D*          # match any number of non-digits
    )            # end capture group 1
    (            # start capture group 2
      \..*         # match a '.', then match to the end of the string
    )            # end capture group 2

#replacement
    \1           # contents of first capture group (from digits up to the '.')
    T            # literal 'T'
    \2           # contents of second capture group ('.' to end of string)
于 2012-12-12T03:43:52.567 に答える