2

正規表現を使用すると、元の文字列を明示的にループすることなく、変更された文字列を取得できることがクールであることがわかりました。たとえば、Python では次のようになります。

from re import sub
print sub(r'12', r'twelve', r'12 + 12 = 24')

版画

twelve + twelve = 24

一般的にリストに似たものはありますか? 特に、Python でどのように使用できるかが最も高く評価されますが、このようなものはどの言語でもクールです。

私が持っているかもしれないサンプルタスクには、次のようなリストが与えられます

[0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1]

の出現箇所をすべて置き換えると、次の0 , 1よう2になります。

[0, 2, 1, 2, 2, 1, 2]

もちろん、この特定のケースでは、リストを数字の文字列に変換して正規表現を使用することもできますが、代わりに使用できる類似のリストがあることを願っています。

4

2 に答える 2

2

この単一のケースの場合:

a = [0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
b = []

while a:
    x = a.pop(0)
    if x == 0 and a and a[0] == 1:
        a.pop(0)
        b.append(2)
    else:
        b.append(x)
于 2012-08-17T07:08:18.740 に答える
2

リスト操作に類似した正規表現はないようです。あなたのようないくつかの単純なケースでは、これを行うことができます:

  1. リストをstrに変換できます
  2. 正規表現の置換を使用して、要件に応じて要素を置き換えます。
  3. 変更された文字列を再度リストに変換するには、literal_eval を使用します。

ここでの作業: http://ideone.com/tgg3N

from re import sub
import ast

myList = [0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
listStr = str(myList)
myNewStr = sub(r'0\s*,\s*1',r'2',listStr)
myNewList = ast.literal_eval(myNewStr)
print str(myNewList)

しかし、その文字列表現で正規表現置換を行う代わりに、リストの要素を置換することでリストのすべての操作を論理的に実行できる場合、それは良い方法ではありません。

于 2012-08-17T07:35:24.177 に答える