使用 python 替换一行中特定索引中的字符串

Replace a string in a specific index in a line using python

我正在处理一个 python 项目,我想用另一个字符串替换文件 (text.txt) 中一行中的特定单词。就像我有这一行 <string name="AppName">old string</string> 我想用一个变量替换旧字符串。这就是为什么我不想使用 replace('old string','new string') 我想根据索引替换它。非常感谢任何帮助。 更清楚地说,我想用新字符串

替换第一个 '>' 和第二个 '<' 之间的任何内容

使用正则表达式替换

from re import sub

string = "<string name='AppName'>Google</string>"
# anything between the >< will be converted to new_var_string
replace_string = sub(r'>\w+<', f'>{new_var_string}<', string)

示例 1:

from re import sub

string = "<string name='AppName'>Google</string>"
# anything between the >< will be converted to new_var_string
new_var_string = 'youtube'
replace_string = sub(r'>\w+<', f'>{new_var_string}<', string)
print(replace_string)

输出:

<string name='AppName'>youtube</string>

示例 2:

from re import sub

string = "<string name='AppName'>Goo1231gl125125e</string>"
# anything between the >< will be converted to new_var_string
new_var_string = 'youtube'
replace_string = sub(r'>\w+<', f'>{new_var_string}<', string)
print(replace_string)

输出:

<string name='AppName'>youtube</string>

这将用给定的字符串替换第一个“>”和第二个“<”之间的任何内容:

s = '<string name="AppName">old string</string>'

def replace(s, new):
    if (i := s.find('>')) >= 0:
        if (j := s[i:].find('<')) >= 0:
            s = s[:i+1] + new + s[j+i:]
    return s

print(replace(s, 'Google'))

输出:

<string name="AppName">Google</string>

注:

这通常使用 RE

来处理