python-3.x 替换某个索引中的字符[重复]

blpfk2vs  于 2022-11-26  发布在  Python
关注(0)|答案(5)|浏览(150)

此问题在此处已有答案

Changing one character in a string(15个答案)
两年前就关门了。
如何从某个索引中替换字符串中的某个字符?例如,我想从字符串中获取中间的字符,如abc,如果该字符不等于用户指定的字符,那么我想替换它。
也许像这样的东西?

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

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

idv4meu81#

因为字符串在Python中是immutable,所以只需创建一个新的字符串,其中包含所需索引处的值。
假设您有一个字符串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'
huwehgph

huwehgph2#

不能替换字符串中的字母。请将字符串转换为列表,替换字母,然后将其转换回字符串。

>>> 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'
7uzetpgm

7uzetpgm3#

Python中的字符串是不可变的,这意味着你不能替换其中的部分。
但是,您可以创建一个新字符串,并对其进行修改。请注意,这在语义上并不等价,因为对旧字符串的其他引用不会被更新。
例如,您可以编写一个函数:

def replace_str_index(text,index=0,replacement=''):
    return '%s%s%s'%(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'

11dmarpk

11dmarpk4#

# 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:猫睡在垫子上

q5lcpyga

q5lcpyga5#

如果必须替换特定索引之间的字符串,也可以使用下面的方法

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

相关问题