[python] 문자열에서 문자의 인스턴스 바꾸기

세미콜론 (i 지정 위치에서)을 콜론으로 바꾸려고하는이 간단한 코드는 작동하지 않습니다.

for i in range(0,len(line)):
     if (line[i]==";" and i in rightindexarray):
         line[i]=":"

그것은 오류를 준다

line[i]=":"
TypeError: 'str' object does not support item assignment

세미콜론을 콜론으로 바꾸려면 어떻게해야합니까? 이 함수는 인덱스를 사용하지 않기 때문에 replace를 사용하면 작동하지 않습니다. 대체하고 싶지 않은 세미콜론이있을 수 있습니다.

문자열에는 “Hei der!; Hello there;!;”와 같이 여러 세미콜론이있을 수 있습니다.

어떤 것을 바꾸고 싶은지 알고 있습니다 (문자열에 색인이 있습니다). 인덱스를 사용할 수 없으므로 replace를 사용하면 작동하지 않습니다.



답변

파이썬의 문자열은 불변이므로 목록으로 취급하고 인덱스에 할당 할 수 없습니다.

사용 .replace()하는 대신 :

line = line.replace(';', ':')

특정 세미콜론 만 교체해야하는 경우 더 구체적이어야합니다. 슬라이싱을 사용하여 대체 할 문자열 섹션을 분리 할 수 ​​있습니다.

line = line[:10].replace(';', ':') + line[10:]

그러면 문자열의 처음 10 자에있는 모든 세미콜론이 바뀝니다.


답변

사용하지 않으려면 아래를 수행하여 주어진 색인에서 문자를 각각의 문자로 대체 할 수 있습니다. .replace()

word = 'python'
index = 4
char = 'i'

word = word[:index] + char + word[index + 1:]
print word

o/p: pythin


답변

문자열을 목록으로 바꾸십시오. 그런 다음 문자를 개별적으로 변경할 수 있습니다. 그런 다음 다음과 함께 다시 넣을 수 있습니다 .join.

s = 'a;b;c;d'
slist = list(s)
for i, c in enumerate(slist):
    if slist[i] == ';' and 0 <= i <= 3: # only replaces semicolons in the first part of the text
        slist[i] = ':'
s = ''.join(slist)
print s # prints a:b:c;d


답변

단일 세미콜론을 바꾸려면 다음을 수행하십시오.

for i in range(0,len(line)):
 if (line[i]==";"):
     line = line[:i] + ":" + line[i+1:]

Havent는 그것을 테스트했습니다.


답변

약간 더 일반적인 경우를 다루어야하지만 목적에 맞게 사용자 정의 할 수 있어야합니다.

def selectiveReplace(myStr):
    answer = []
    for index,char in enumerate(myStr):
        if char == ';':
            if index%2 == 1: # replace ';' in even indices with ":"
                answer.append(":")
            else:
                answer.append("!") # replace ';' in odd indices with "!"
        else:
            answer.append(char)
    return ''.join(answer)

도움이 되었기를 바랍니다


답변

단순히 문자열의 문자에 값을 할당 할 수는 없습니다. 이 방법을 사용하여 특정 문자의 값을 바꿉니다.

name = "India"
result=name .replace("d",'*')

출력 : In * ia

또한 첫 번째 문자를 제외한 첫 번째 문자의 모든 발생에 대해 *를 대체하려면 예를 들어. 문자열 = babble 출력 = ba ** le

암호:

name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back


답변

변수 ‘n’에 지정된 인덱스 값으로 바꾸려면 다음을 시도하십시오.

def missing_char(str, n):
 str=str.replace(str[n],":")
 return str