programing

문자열에서 문자 인스턴스 바꾸기

newsource 2023. 6. 14. 21:54

문자열에서 문자 인스턴스 바꾸기

세미콜론(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

세미콜론을 콜론으로 대체하려면 어떻게 해야 합니까?대체 기능은 인덱스를 사용하지 않으므로 대체를 사용할 수 없습니다. 교체하지 않을 세미콜론이 있을 수 있습니다.

문자열에는 "하이더!"; 안녕하세요;!와 같은 세미콜론이 얼마든지 있을 수 있습니다.;"

대체할 항목을 알고 있습니다(해당 항목의 인덱스가 문자열에 있습니다).인덱스를 사용할 수 없기 때문에 바꾸기를 사용할 수 없습니다.

python의 문자열은 불변이므로 목록으로 처리하고 인덱스에 할당할 수 없습니다.

대신 사용:

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:]

하지만 테스트해 본 적은 없습니다.

단순히 문자열의 문자에 값을 할당할 수 없습니다.특정 문자의 값을 바꾸려면 다음 방법을 사용합니다.

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

출력: In*ia

또한 첫 번째 문자를 제외한 모든 첫 번째 문자에 대해 *로 대체하려면 예를 들어 string = babble output = ba**le

코드:

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

이것은 조금 더 일반적인 사례를 다루어야 하지만, 당신은 당신의 목적에 맞게 그것을 사용자 정의할 수 있어야 합니다.

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)

별도의 목록을 만들지 않고 문자열에 .replace() 메서드를 효과적으로 사용하려면 예를 들어 공백이 있는 문자열을 포함하는 목록 사용자 이름을 보십시오. 공백을 각 사용자 이름 문자열에 밑줄로 바꾸려고 합니다.

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []

각 사용자 이름의 공백을 대체하기 위해 파이썬에서 범위 함수를 사용하는 것을 고려합니다.

for name in names:
    usernames.append(name.lower().replace(' ', '_'))

print(usernames)

또는 하나의 목록을 사용하려는 경우:

for user in range(len(names)):
   names[user] = names[user].lower().replace(' ', '_')

print(names)

이거 어때:

sentence = 'After 1500 years of that thinking surpressed'

sentence = sentence.lower()

def removeLetter(text,char):

    result = ''
    for c in text:
        if c != char:
            result += c
    return text.replace(char,'*')
text = removeLetter(sentence,'a')

변수 'n'에 지정된 인덱스 값으로 대체하는 경우 다음을 시도합니다.

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

특정 인덱스에서 문자를 대체하는 기능은 다음과 같습니다.

def replace_char(s , n , c):
    n-=1
    s = s[0:n] + s[n:n+1].replace(s[n] , c) + s[n+1:]
    return s

여기서 s는 문자열, n은 인덱스, c는 문자입니다.

특정 인스턴스에서 문자를 바꾸거나 문자열을 바꾸기 위해 이 메서드를 작성했습니다.instance는 0에서 시작합니다(선택 사항 inst 인수를 1로 변경하고 test_instance 변수를 1로 변경하면 쉽게 1로 변경할 수 있습니다).

def replace_instance(some_word, str_to_replace, new_str='', inst=0):
    return_word = ''
    char_index, test_instance = 0, 0
    while char_index < len(some_word):
        test_str = some_word[char_index: char_index + len(str_to_replace)]
        if test_str == str_to_replace:
            if test_instance == inst:
                return_word = some_word[:char_index] + new_str + some_word[char_index + len(str_to_replace):]
                break
            else:
                test_instance += 1
        char_index += 1
    return return_word

다음을 수행할 수 있습니다.

string = "this; is a; sample; ; python code;!;" #your desire string
result = ""
for i in range(len(string)):
    s = string[i]
    if (s == ";" and i in [4, 18, 20]): #insert your desire list
        s = ":"
    result = result + s
print(result)
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

usernames = []

for i in names:
    if " " in i:
        i = i.replace(" ", "_")
    print(i)

출력 : Joey_Tribbiani Monica_Geller Chandler_Bing Phoebe_Buffay

제 문제는 숫자 목록이 있다는 것이었고, 그 숫자의 일부만 바꾸고 싶어서 이렇게 했습니다.

original_list = ['08113', '09106', '19066', '17056', '17063', '17053']

# With this part I achieve my goal
cves_mod = []
for i in range(0,len(res_list)):
    cves_mod.append(res_list[i].replace(res_list[i][2:], '999'))
cves_mod

# Result
cves_mod
['08999', '09999', '19999', '17999', '17999', '17999']

훨씬 더 단순합니다.

input = "a:b:c:d"
output =''
for c in input:
    if c==':':
        output +='/'
    else:
        output+=c
print(output)

출력: a/b/c/d

나는 대신 이것을 2 in 1로 사용하려고 했습니다.

usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]

# write your for loop here
for user in range(0,len(usernames)):
    usernames[user] = usernames[user].lower().replace(' ', '_')

print(usernames)

특정 인덱스에서 문자를 더 깨끗하게 바꿀 수 있는 방법

def replace_char(str , index , c):
    return str[:index]+c+str[index+1:]

언급URL : https://stackoverflow.com/questions/12723751/replacing-instances-of-a-character-in-a-string