确定python字符串是否仅包含空格,制表符和/或新行的组合?

时间:2017-11-08 19:20:47

标签: python performance character

如果我有一个字符串foo,我很好奇,如果它只包含空格,制表符\t和{{1}的组合换行符(可以是任何一个,但只有它们),检查它的有效方法是什么?

我的直觉是将\n转换为集合foo,并查看该集合是否仅由这些字符组合而成。虽然我可以设想一些迭代检查,但想知道什么是有效的方法。这个检查将是XML文档中的每个元素,在pyspark map函数中是数千次,因此性能很重要。

感谢。

1 个答案:

答案 0 :(得分:3)

Bahrom在评论中的建议可行,但最快的方法可能是使用正则表达式。编译一个正则表达式,用于搜索不是空格的内容:

import re
pattern = re.compile(r"[^ \t\n]")

然后在每个foo

上运行它
is_all_spaces = re.search(pattern, foo) is None

这应该足够快,但要记住要始终测量。 (timeit模块可能很有用。)特别是,测量代码的这个空格检查部分是否比XML解析部分需要花费大量时间。

为什么双重否定,你问?寻找不是空格的东西,而不是仅仅编写与一堆空格(r"^[ \t\n]*$")匹配的正则表达式,意味着如果字符串全部是我们不创建和销毁匹配对象空间。如果这是最常见的情况,它可能会稍快一些。多快了?我无法告诉你 - 我还没有测量过它。