如何在字符串中查找值,操作和替换它们

时间:2011-02-02 17:37:22

标签: python regex

如何在字符串中查找值,为每个值添加特定值并用固定字符串替换输出。

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)">')

1 个答案:

答案 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)