将内容传递给 Python 中另一个模块的函数
Pass Content To Function of Another Module in Python
我正在使用 SAX 解析器。我正在尝试发送使用以下代码检索到的 'content':
检查 startElement 和 endElement 后,我有以下代码:
def characters(self, content):
text = format.formatter(content)
这个 format.formatter 应该读取我作为 'content' 发送的数据,以进行任何处理,例如删除垃圾字符等和 return 它。我通过使用 string.replace 函数来做到这一点:
remArticles = {' ! ':'', ' $ ':''}
for line in content:
for i in remArticles:
line= line.replace(i, remArticles[i])
#FormattedFileForIndexing.write(line)
return line
但是输出没有按预期出现。
如果有人能在这方面提供帮助,那就太好了。
source 会是这样的:
"Oh! That's lots and 1000s of $$$$"
预期:哦,很多 1000s
你的 return line
过度对齐,假设你的 Q 显示的是你的实际代码,所以你在第一次替换后结束。将 return
缩进 4 个空格,因此它与 for
关键字对齐,而不是与 for
循环的主体对齐。
已添加:{' ! ':'', ' $ ':''}
仅匹配前后有空格的感叹号和美元符号。但是随后 OP 说示例输入是 "Oh! That's lots and 1000s of $$$$"
- 在这些标点符号前后没有 个空格,因此不会替换任何内容。
您正在遍历每个字符而不是每一行:
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
这个怎么样:
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
我正在使用 SAX 解析器。我正在尝试发送使用以下代码检索到的 'content':
检查 startElement 和 endElement 后,我有以下代码:
def characters(self, content):
text = format.formatter(content)
这个 format.formatter 应该读取我作为 'content' 发送的数据,以进行任何处理,例如删除垃圾字符等和 return 它。我通过使用 string.replace 函数来做到这一点:
remArticles = {' ! ':'', ' $ ':''}
for line in content:
for i in remArticles:
line= line.replace(i, remArticles[i])
#FormattedFileForIndexing.write(line)
return line
但是输出没有按预期出现。
如果有人能在这方面提供帮助,那就太好了。
source 会是这样的:
"Oh! That's lots and 1000s of $$$$"
预期:哦,很多 1000s
你的 return line
过度对齐,假设你的 Q 显示的是你的实际代码,所以你在第一次替换后结束。将 return
缩进 4 个空格,因此它与 for
关键字对齐,而不是与 for
循环的主体对齐。
已添加:{' ! ':'', ' $ ':''}
仅匹配前后有空格的感叹号和美元符号。但是随后 OP 说示例输入是 "Oh! That's lots and 1000s of $$$$"
- 在这些标点符号前后没有 个空格,因此不会替换任何内容。
您正在遍历每个字符而不是每一行:
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
这个怎么样:
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