Python 可以跨行执行 'replace' 功能吗?
Can Python perform the 'replace' function across lines?
我只想将下面脚本中的第 3 个 }
替换为 ]
。
"objectLocationHeight" : "46.500000",
"text" : "1494"
},
"timestamp" : "2015-10-09 12:50:58",
"eventType" : "keyboardOnAnsBox",
"action" : "endTyping"
}
},
"submitTime" : "
以下为目标结果
"objectLocationHeight" : "46.500000",
"text" : "1494"
},
"timestamp" : "2015-10-09 12:50:58",
"eventType" : "keyboardOnAnsBox",
"action" : "endTyping"
}
],
"submitTime" : "
但是,'replace'函数似乎只能在一行内工作,我无法通过
得到想要的结果
str1= str.replace("},\n\"submit","],\n\"submit")
我可以知道是否有其他语法允许我跨行执行 replace
吗?
replace 方法本身只接受另一个可选参数 "max"。所以,我想说没有一些编码就没有直接的方法。
那怎么办呢?好吧,我假设您正在阅读 'str' 变量中的整个文本。您可以 做的只是遍历 str 行,一旦到达第 3 行,就对该行应用 replace 方法。
类似于:
counter = 0
for line in str.splitlines():
if "}" in line:
counter += 1
if counter == 2:
line = line.replace("}", "]")
# do something with line here ...
不过,我不喜欢这个解决方案。它非常特定于您的样本,但您没有提供任何其他类型的信息。
如果我对您的问题理解正确,您需要替换文档中 ]
中出现在 "submitTime"
.
之前的任何 }
您可以使用反向文档阅读和布尔标志来确保上一行是相关的行:
for line in reversed(open("filename").readlines()):
cond = line.startswith("\"submitTime\"")
if cond and line.startswith("},"):
new = line.replace("},","],")
print new
cond = False
else:
print line
也许存在更优雅的解决方案,但这应该可行。当然,您可以通过打开输出文件并用 fout.write(line)
写入来替换 print
。
我只想将下面脚本中的第 3 个 }
替换为 ]
。
"objectLocationHeight" : "46.500000",
"text" : "1494"
},
"timestamp" : "2015-10-09 12:50:58",
"eventType" : "keyboardOnAnsBox",
"action" : "endTyping"
}
},
"submitTime" : "
以下为目标结果
"objectLocationHeight" : "46.500000",
"text" : "1494"
},
"timestamp" : "2015-10-09 12:50:58",
"eventType" : "keyboardOnAnsBox",
"action" : "endTyping"
}
],
"submitTime" : "
但是,'replace'函数似乎只能在一行内工作,我无法通过
得到想要的结果str1= str.replace("},\n\"submit","],\n\"submit")
我可以知道是否有其他语法允许我跨行执行 replace
吗?
replace 方法本身只接受另一个可选参数 "max"。所以,我想说没有一些编码就没有直接的方法。
那怎么办呢?好吧,我假设您正在阅读 'str' 变量中的整个文本。您可以 做的只是遍历 str 行,一旦到达第 3 行,就对该行应用 replace 方法。
类似于:
counter = 0
for line in str.splitlines():
if "}" in line:
counter += 1
if counter == 2:
line = line.replace("}", "]")
# do something with line here ...
不过,我不喜欢这个解决方案。它非常特定于您的样本,但您没有提供任何其他类型的信息。
如果我对您的问题理解正确,您需要替换文档中 ]
中出现在 "submitTime"
.
}
您可以使用反向文档阅读和布尔标志来确保上一行是相关的行:
for line in reversed(open("filename").readlines()):
cond = line.startswith("\"submitTime\"")
if cond and line.startswith("},"):
new = line.replace("},","],")
print new
cond = False
else:
print line
也许存在更优雅的解决方案,但这应该可行。当然,您可以通过打开输出文件并用 fout.write(line)
写入来替换 print
。