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') {}>
但是,如果我在字符串中的a
和b
之间放置一个空格,那么该空格会改变Result
:
In [3]: parse.parse("{}{}","a b")
Out[3]: <Result ('a', ' b') {}>
我希望parse.parse
方法忽略此空格,但仍会返回'a'
和'b'
。这是可能的吗?如果可以的话,我该怎么做?
答案 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') {}>