2013-08-17 2 views
1

필자가 쓰는 스크립트는 "trt"라는 문자열로 가득 찬 목록을 생성합니다. 목록을 처리하기 전에 해당 문자열 중 일부를 바꿔야 할 수도 있습니다. 예를 들어, 문자열 "5"는 "4"로 대체해야하지만 "-5"또는 "5 *"와 같은 문자열은 사용하지 않아야합니다. 해결책은 "trt"목록의 문자열 순서를 변경하거나 목록에 새로운 문자 나 공백을 입력해서는 안됩니다.Python - 목록에서 문자열을 바꾸는 방법은 무엇입니까?

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

을하지만 "5 *"에 영향을하고 스크립트가 오작동하게로는 좋은 해결책이되지 않습니다 :

은 이미 이런 식으로 작업을 수행하려고했습니다. 내가 제대로 이해하면

+0

. ['re module'] (http://docs.python.org/2/library/re.html)을보십시오. –

+0

* 및 스크립트가 오작동합니다 *. '오작동'을 정의 하시겠습니까? –

+1

샘플 입력 및 예상 출력을 제공 할 수 있습니까? –

답변

7

, 당신이 원하는 :

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] 

get가 보인다 wordreplacements dict에두고 해당 키를 찾지 못하면 word 자체를 반환하고 그렇지 않으면 해당 값을 반환합니다.

+0

당신, 선생님, 승리로 가득차 있습니다. – user2684432

0

word.replace('5','4')은 문자열 단어의 각 5를 4로 바꿉니다.이 작업이 원하는 작업이 아닙니다 (생각하지 않습니다).

하나의 솔루션 :

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

보다 기능 솔루션 :

당신은 정규식을 사용할 필요가
trt = [i if i != "5" else "4" for i in trt] 
관련 문제