在Python中将内容传递给另一个模块的功能

时间:2015-01-22 15:01:26

标签: python memory arguments argument-passing saxparser

我正在使用SAX Parser。我正在尝试发送'内容'我使用以下代码检索:

检查startElement和endElement后,我有以下代码:

def characters(self, content):  
   text =  format.formatter(content)

这个format.formatter应该读取我发送的内容'内容'任何处理,如删除垃圾字符等,并返回它。我通过使用string.replace函数来做到这一点:

    remArticles = {' ! ':'', ' $ ':''}

    for line in content:
        for i in remArticles:
            line= line.replace(i, remArticles[i])
        #FormattedFileForIndexing.write(line)
            return line

然而,输出没有达到预期效果。

如果有人可以提供帮助,那就太好了。

源代码会像:

"喔!这是很多和1000的$$$$"

预计:哦那很多1000s

3 个答案:

答案 0 :(得分:1)

您正在迭代每个字符而不是每一行:

def characters(content):
    remArticles = {'!': '', '$': ''} # remove spaces from " ! "
    for i in remArticles:
         content = content.replace(i, remArticles[i])
    return content

您还试图将!$与其周围的空格匹配,这些空间根据您的预期输出不正确。

In [6]: content =  "Oh! That's lots and 1000s of $$$$"

In [7]: characters(content)
Out[7]: "Oh That's lots and 1000s of "

只使用替换是最有效的选择:

In [20]: timeit characters(content)
1000000 loops, best of 3: 746 ns per loop

In [21]: timeit format_this(content)
100000 loops, best of 3: 2.57 µs per loop

答案 1 :(得分:0)

假设您的Q显示实际代码,return line过度对齐,因此您在第一次更换后结束。将return缩进4个空格,使其与for关键字对齐,而不是与for循环的主体对齐。

已添加:{' ! ':'', ' $ ':''}仅在感叹号和美元符号之前和之后都有空格时才会匹配感叹号和美元符号。但是OP表示在这些标点符号之前和之后的样本输入为"Oh! That's lots and 1000s of $$$$" - 没有空格,因此不会替换任何内容。

答案 2 :(得分:0)

这个怎么样:

def format_this(content):
    bad_keys = {'!', '$'}
    return "".join([element for element in content if element not in bad_keys])

if __name__ == '__main__':
    content = "Oh! That's lots and 1000s of $$$$"
    formatted_content = format_this(content)
    print formatted_content

>>> Oh That's lots and 1000s of