1

私が書いているスクリプトは、文字列でいっぱいの「trt」というリストを生成します。これらの文字列の一部は、リストをさらに処理する前に置換する必要がある場合があります。たとえば、文字列「5」は「4」に置き換える必要がありますが、「-5」や「5*」などの文字列をいじらないでください。このソリューションでは、リスト "trt" 内の文字列の順序を変更したり、リストに新しい文字や空白を入力したりしてはなりません。

私はすでにこのようにしようとしました:

trt = [word.replace('5','4') for word in trt]

しかし、これは "5*" に影響を与え、スクリプトが誤動作するため、良い解決策ではありません。

4

2 に答える 2

9

私があなたを正しく理解していれば、あなたはこれを望んでいます:

trt = ['4' if word == '5' else word for word in trt]

これらの置換を多数行う必要がある場合は、マップを定義することをお勧めします。

replacements = {
    '5': '4',
    'a': 'b',
}
trt = [replacements.get(word, word) for word in trt]

getdict を検索しword、そのようなキーが見つからない場合は自分自身を返し、見つかった場合は対応する値を返します。replacementsword

于 2013-08-17T19:56:01.990 に答える
0

word.replace('5','4')文字列単語の各 5 を 4 に置き換えます。これは、やりたいことではありません (私は思いません)。

1 つの解決策:

for index, value in enumerate(trt):
    if value == "5":
        trt[index] = "4"

より機能的なソリューション:

 trt = [i if i != "5" else "4" for i in trt]
于 2013-08-17T19:57:51.730 に答える