4

次のような文字列のリストがあります。

Item_has_was_updated_May_2010
Item_updated_Apr_2011
Item_got_updated_Sept_2011

文字列のリストを繰り返し処理し、文字列の最後の 2 つの部分を更新したいと考えています。月と年。私が同じままにしたい文字列の残りの部分。月と年はスクリプトで以前に設定した変数から取得されるため、月を x、年を y としましょう。

私のアプローチは次のとおりです。

  1. 文字列のリストを反復処理する
  2. 各文字列を「_」で分割
  3. 最後の 2 項目を置き換えます
  4. 置き換えられたアイテムと一緒にアイテムを結合します

月と年はスクリプトで以前に設定した変数から取得されるため、月を x、年を y としましょう。

誰かがアプローチを提案できれば、それはありがたいです。

4

3 に答える 3

9

を使用すると、正規表現なしでそれを行うことができますstr.rsplit

yourlist = [s.rsplit('_', 2)[0] + '_' + x + '_' + y for s in yourlist]

オンラインで動作することを確認してください:ideone


文字列の連結の代わりにフォーマットを使用する場合は、次のことを試してください。

yourlist = ['{}_{}_{}'.format(s.rsplit('_', 2)[0], x, y) for s in yourlist]

オンラインで動作することを確認してください:ideone

于 2012-05-11T21:44:42.403 に答える
2

本当に「re」は必要ないと思います。
次のようなものを使用できます。

m="dec"
y=2012
l=["Item_has_was_updated_May_2010",
    "Item_updated_Apr_2011",
    "Item_got_updated_Sept_2011"]
r=[]
for s in l:
    t=s.split("_")
    r.append("_".join(t[:-2])+"_%s_%s"%(m,y))
于 2012-05-11T21:51:58.510 に答える
2
lst = [
   'Item_has_was_updated_May_2010',
   'Item_updated_Apr_2011',
   'Item_got_updated_Sept_2011',
]
month='Sep';year='2012'
for s in lst:
        list=s.split('_')
        list[-2:]=(month,year)
        r=''
        for a in list:
                r=r+"%s_"%a
        r=r[:-1]
        print r
于 2012-05-12T03:47:19.873 に答える