在解析模块中,如何从解析的值中去除空格?

时间:2016-12-15 17:44:45

标签: python parsing formatting

parse模块可用作format的反转。其文档提及(参考format specification mini-language

  

对齐运算符将导致从已分析的值中去除空格(或指定的填充字符)。宽度未强制执行;它只是表明可能有空格或者#> 0" s剥离。

我想做类似的事情,但我找不到任何如何让它发挥作用的例子。例如,在正常操作中,如果我使用模板"{}{}"来匹配"ab",我会得到一个Result对象,其中包含'a''b':< / p>

In [1]: import parse

In [2]: parse.parse("{}{}","ab")
Out[2]: <Result ('a', 'b') {}>

但是,如果我在字符串中的ab之间放置一个空格,那么该空格会改变Result

In [3]: parse.parse("{}{}","a b")
Out[3]: <Result ('a', ' b') {}>

我希望parse.parse方法忽略此空格,但仍会返回'a''b'。这是可能的吗?如果可以的话,我该怎么做?

3 个答案:

答案 0 :(得分:2)

您只需要用{:^ }替换{}来解析格式字符串。根据您的示例,这基于我的测试。

  

{:^}剥离前导和尾随空格

In [1]: import parse

In [2]: parse.parse("{:^}{:^}","ab")
Out[2]: <Result ('a', 'b') {}>

In [3]: parse.parse("{:^}{:^}","a b")
Out[3]: <Result ('a', 'b') {}>

In [4]: parse.parse("{:^}{:^}","a    b"
Out[4]: <Result ('a', 'b') {}>    

In [5]: parse.parse("{:^}{:^}"," a  b ")
Out[5]: <Result ('a', 'b') {}>

答案 1 :(得分:1)

如果您在链接的documentation向下滚动,则会有明确的示例:

  

搞乱对齐:

>>> parse('with {:>} herring', 'with     a herring')
<Result ('a',) {}>
>>> parse('spam {:^} spam', 'spam    lovely     spam')
<Result ('lovely',) {}>
  

请注意&#34;中心&#34;对齐不测试以确保值   居中 - 它只是剥离前导和尾随空格。

答案 2 :(得分:1)

指定字符串长度(以及值之间的空格)似乎有效:

import parse

result = parse.parse("{1s} {1s}","a b")
print(result)  # -> <Result ('a', 'b') {}>