2016-12-15 53 views
1

parse模塊作爲format的反函數很有用。它的文檔中提到(參考format specification mini-language在解析模塊中,如何去除解析值中的空格?

對齊運算符將導致空格(或指定的填充字符)從解析值中剝離。寬度未被強制執行;它只是表示可能有空白或「0」去除。

我想要做這樣的事情,但是我找不到任何如何讓它工作的例子。例如,在其正常工作,如果我用一個模板"{}{}"匹配"ab",我得到一個Result對象包含'a''b'

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'。這是可能的嗎?如果是這樣,我該怎麼做?

+0

http://stackoverflow.com/questions/761804/trimming-a-string-in-python – McNets

+0

即柱有關刪除帶'strip()'的前後空格,但我也感興趣的是忽略模板中間的空格以及使用'parse'的解決方案。 –

+0

嘗試使用'.replace()'https://www.tutorialspoint.com/python/string_replace.htm – McNets

回答

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

如果你鏈接的documentation向下滾動有明確的例子:

而且擺弄對齊:

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

注意,「中心」對齊不測試以確保值 居中 - 它只是刪除前導空白和尾隨空白。

1

指定字符串的長度(和值之間的空間)似乎工作:

import parse 

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