如何在字符串中查找值,为每个值添加特定值并用固定字符串替换输出。
import re
def _replace(content):
#x = float(content.group(4))+20
#y = float(content.group(6))+20
return content.group(6)
print re.sub('<g(\s)transform="matrix\((.*)(\s)(.*)(\s)(.*)\)\"', _replace, '<g transform="matrix(0.412445 -0.0982513 0.0982513 0.412445 -5.77618 67.0025)">')
答案 0 :(得分:1)
首先,我应该重复通常的警告,即不使用正则表达式解析XML。这是一个坏主意,并且永远不会适用于所有情况。如果您实际上正在尝试解析完整的xml文档use an XML parser。
有人说过,我总是犯这样快速和肮脏的东西。如果您真的需要一次性解决方案,那么简单的正则表达式通常可以完成工作。请注意,一旦遇到更复杂的事情,它就会再次困扰你!
接下来,我承认不是一个正则表达式的wiz,但这是我如何修改你的代码片段:
import re
def _replace(content):
values = [float(val) for val in content.group(2).split()]
values[3] += 20
values[5] += 100
values = ['{0}'.format(val) for val in values]
return content.group(1) + ' '.join(values) + content.group(3)
test_string = '<g transform="matrix(0.412445 -0.0982513 0.0982513 0.412445 -5.77618 67.0025)">'
pattern = r'(transform=\"matrix\()(.*?)(\))'
print test_string
print re.sub(pattern, _replace, test_string)