带有变量的str.replace

时间:2015-10-13 21:37:03

标签: python variables replace

这可能是一个简单的解决方法,但在我的头脑周围有点麻烦;我正在从不同的脚本中读取行,并希望用变量替换行,但是将其替换为box1而不是值55, 55.7

box1 = 55, 55.7
box2 = -9, -7

with open('parttest', 'r') as file :
    filedata = file.read()

filedata = filedata.replace('box_lat', 'box1')
filedata = filedata.replace('box_lon', 'box2')

with open('buildtest', 'w') as file:
    file.write(filedata)

3 个答案:

答案 0 :(得分:2)

如果要替换变量box1的值,则需要删除它周围的引号。尝试:

box1 = "55, 55.7"
box2 = "-9, -7"
filedata = filedata.replace('box_lat', box1)
filedata = filedata.replace('box_lon', box2)

报价将替换为所附的文字;而变量名不应该用引号括起来。

答案 1 :(得分:2)

您目前正在使用变量的文字名替换这些值。如果您希望它使用这些变量名称引用的值,请省略引号。

接下来,您必须将这些变量转换为字符串,因为我怀疑您首先使用引号的原因是因为没有它们时出现错误。这是因为replace只接受字符串,而变量为tuple s。要解决此问题,请将变量强制转换为字符串。

filedata = filedata.replace('box_lat', str(box1))

如果您不想保留以tuple的字符串表示形式出现的括号,可以将其删除:

filedata = filedata.replace('box_lat', str(box1).strip('()'))

答案 2 :(得分:0)

正如@tigerhawk 和@sam 所说,如果您在引号中输入内容,则表示您在引号中输入的字面意思,因此请尝试删除“box 1”周围的引号