Python3 - 字符串中的变量替换

Python011

Python3 - 字符串中的变量替换,第1张

创建一个内嵌变量字符串,指定字符串替换掉变量。

Python并没有对在字符串中简单替换变量值提供直接的支持。 通过使用字符串的 format() 方法来解决这个问题。比如:

或者,如果被替换的变量能在变量域中找到, 那么可以结合使用 format_map() vars() 。就像下面这样:

format() format_map() 的一个缺陷就是它们并不能很好的处理变量缺失的情况,比如:

在python3中,有一种可读性更强,更方便的替代方法,在字符串前加 f ,需要被替代的变量外加花括号 {} ,其命名与替代变量的名称相同

多年以来由于Python缺乏对变量替换的内置支持而导致了各种不同的解决方案。在Python3中,推荐使用在字符串前加 f 的方法。

文件的模式有很多种不一一列举,r+表示打开一个文件用于读写。文件指针将会放在文件的开头。

def readFile(path):

#R

with open(path,"r+") as f:

for line in f:

print(line)

f.close()

print("读文件完成")

path="D:\\tmp\\manim\\file\\1.txt"

readFile(path)

查找字符串位置,str.find(target) 返回起始点位置如果是-1则表示不存在

"123WWW".find("WWW")

文件指针偏移到指定位置

#文件路径,原字符串,要替换成的目标字符串

def replaceText(filePath,sourceText,targetText):

if(len(sourceText)!=len(targetText)):

raise Exception("原始字符串长度与目标字符串不符,容易覆盖有用信息", sourceText,targetText)

with open(filePath,'r+') as f:

line=f.readline()

index=0

# 遇到中间空行的可以自行观察并不是空字符串

while ( line!=""):

print(line)

# 本行内字符串所在位置

windex=line.find(sourceText)

if(windex!=-1):

print("windex={}".format(windex))

print("当前位置:{},替换内容起点:{}".format(f.tell(),index+windex))

f.seek(index+windex)

f.write(targetText)

# f.flush()

f.seek(index)

# 返回当前文件指针,应该是新一行的开始位置

index=f.tell()

line=f.readline()

f.close()

print("文件修改完毕")

python中快速进行多个字符替换的方法小结

先给出结论:

要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高;

如果要替换的字符数量较多,则推荐在 for 循环中调用 replace() 进行替换。

可行的方法:

1. 链式replace()

?

1   string.replace().replace()   

1.x 在for循环中调用replace() 「在要替换的字符较多时」

2. 使用string.maketrans

3. 先 re.compile 然后 re.sub