我正在尝试编写一个简短的函数来处理文件中的文本行。当它遇到具有重要内容的行(意味着不仅仅是空格)时,它就是对该行做一些事情。我想要的控制结构是
if '\S' in line: do something
或者
if r'\S' in line: do something
(我也用双引号尝试了相同的组合,是的,我已经导入了 re。)if
上面的语句,在我尝试的所有形式中,总是返回 False。最后,我不得不求助于测试
if re.search('\S', line) is not None: do something
if
这行得通,但与简单的陈述相比,感觉有点笨拙。那么,我的问题是,为什么该if
声明不起作用,有没有办法(看似)优雅而简单地做一些事情?
我还有一个与控制结构无关的问题,但由于我怀疑它也与可能非法使用正则表达式有关,所以我会在这里问它。如果我有一个字符串
s = " \t\t 一些文本 \t \n\n"
编码
s.strip('\s')
返回包含空格、制表符和换行符的相同字符串(r'\s' 也不例外)。编码
s.strip()
返回“一些文本”。这一点,即使在没有字符串的情况下调用 strip 应该默认剥离空白字符,在我看来,这正是表达式 '\s' 正在做的事情。为什么一个剥离空白而另一个不剥离?
感谢您的任何澄清。