2017-04-23 68 views
0

我有一個Python字符串是這樣的:如何將字符串拆分爲以「 - 」開頭的部分?

str = "--jvm 100 --cpu 200" 

如何獲得兩個部分組成?

'--jvm 100' 
'--cpu 200' 

我用str.split('--')和得到的東西,是不是最優的:

'' 
'jvm 100' 
'cpu 200' 

我想正則表達式,但不能弄明白。

+4

它看起來像你解析命令行參數,你有沒有考慮['argparse'(https://開頭的文檔。 python.org/3/library/argparse.html)? – jonrsharpe

+1

或[Click](http://click.pocoo.org),這是一個非常易於使用的命令行處理包。 – Wolf

+0

你應該更新你的答案,解釋你爲什麼要這樣做。 – Soviut

回答

1

爲什麼不添加這些--再次

input = "--jvm 100 --cpu 200" 
values = ["--%s" % item for item in input.split("--") if item] 

結果:[ '--jvm 100', '200 --cpu']

+0

請修復您的格式。 – Soviut

+0

感謝@Soviut提及格式:) –

+0

@ cricket_007我更新了我的代碼。 –

1

假設你正在試圖獲得的來自所有參數的值,您應該使用參數解析包來執行此操作。

https://docs.python.org/2/howto/argparse.html

他們已經設計了所有的解析規則,因此所有你所要做的就是專注於獲取值了出來。在很多情況下,arg解析工具可讓您指定如何鍵入值,因此數字將轉換爲整數,並將true/false轉換爲布爾值。

import argparse 

# tell our parser what args to expect and what type they are 
parser = argparse.ArgumentParser() 
parser.add_argument('--jvm', type=int) 
parser.add_argument('--cpu', type=int) 

raw = '--jvm 100 --cpu 200' 
# argparser expects a list of args so split the string on spaces 
args = parser.parse_args(raw.split()) 

# access our parsed args 
print args.jvm 
print args.cpu 

以上只是一個例子,所以您需要調整它以滿足您的需求。

1

正則表達式,你可以做這樣的:

re.findall(r'--.*?(?=\s+--|$)', str) 
1
>>> import re 
>>> re.findall(r'--\w+ \d+', str) 
['--jvm 100', '--cpu 200']