programing

특정 인덱스에서 문자 바꾸기

i4 2023. 5. 6. 14:03
반응형

특정 인덱스에서 문자 바꾸기

특정 인덱스에서 문자열의 문자를 바꾸려면 어떻게 해야 합니까?예를 들어, abc와 같은 문자열에서 중간 문자를 가져오려고 하는데, 사용자가 지정한 문자와 문자가 동일하지 않으면 바꾸려고 합니다.

이런 거 아닐까요?

middle = ? # (I don't know how to get the middle of a string)

if str[middle] != char:
    str[middle].replace('')

Python에서 문자열은 불변이므로 원하는 인덱스에 값을 포함하는 새 문자열을 생성하면 됩니다.

문자열이 있다고 가정할 때s아마s = "mystring"

원하는 인덱스의 일부를 원본의 "슬라이스" 사이에 배치하여 신속하게(분명히) 바꿀 수 있습니다.

s = s[:index] + newstring + s[index + 1:]

당신은 당신의 끈 길이를 2로 나누면 중간을 찾을 수 있습니다.len(s)/2

미스터리 입력을 받는 경우 예상 범위를 벗어나는 인덱스를 처리하도록 주의해야 합니다.

def replacer(s, newstring, index, nofail=False):
    # raise an error if index is outside of the string
    if not nofail and index not in range(len(s)):
        raise ValueError("index outside given string")

    # if not erroring, but the index is still not in the correct range..
    if index < 0:  # add it to the beginning
        return newstring + s
    if index > len(s):  # add it to the end
        return s + newstring

    # insert the new string between "slices" of the original
    return s[:index] + newstring + s[index + 1:]

이는 다음과 같이 작동합니다.

replacer("mystring", "12", 4)
'myst12ing'

문자열의 문자는 바꿀 수 없습니다.문자열을 목록으로 변환하고 문자를 바꾼 다음 다시 문자열로 변환합니다.

>>> s = list("Hello world")
>>> s
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> s[int(len(s) / 2)] = '-'
>>> s
['H', 'e', 'l', 'l', 'o', '-', 'W', 'o', 'r', 'l', 'd']
>>> "".join(s)
'Hello-World'

Python의 문자열은 불변이므로 일부를 대체할 수 없습니다.

그러나 수정된 새 문자열을 생성할 수 있습니다.이전 문자열에 대한 다른 참조는 업데이트되지 않으므로 의미론적으로 동일하지 않습니다.

예를 들어 다음과 같은 함수를 작성할 수 있습니다.

def replace_str_index(text,index=0,replacement=''):
    return '%s%s%s'%(text[:index],replacement,text[index+1:])

또는 f-timeout 도입 이후:

def replace_str_index(text,index=0,replacement=''):
    return f'{text[:index]}{replacement}{text[index+1:]}'

그런 다음 예를 들어 다음과 같이 부릅니다.

new_string = replace_str_index(old_string,middle)

대체할 문자를 입력하지 않으면 새 문자열에 제거할 문자가 포함되지 않으므로 임의 길이의 문자열을 입력할 수 있습니다.

예를 들어:

replace_str_index('hello?bye',5)

돌아올 것입니다'hellobye'그리고:

replace_str_index('hello?bye',5,'good')

돌아올 것입니다'hellogoodbye'.

# Use slicing to extract those parts of the original string to be kept
s = s[:position] + replacement + s[position+length_of_replaced:]

# Example: replace 'sat' with 'slept'
text = "The cat sat on the mat"
text = text[:8] + "slept" + text[11:]

고양이가 돗자리에 앉았습니다.

O/P : 고양이는 돗자리에서 잠을 잤습니다.

특정 인덱스 사이에 문자열을 바꿔야 하는 경우에도 아래 방법을 사용할 수 있습니다.

def Replace_Substring_Between_Index(singleLine,stringToReplace='',startPos,endPos):
    
       singleLine = singleLine[:startPos]+stringToReplace+singleLine[endPos:]
    
return singleLine

언급URL : https://stackoverflow.com/questions/41752946/replacing-a-character-from-a-certain-index

반응형