我有一個Python字符串是這樣的:如何將字符串拆分爲以「 - 」開頭的部分?
str = "--jvm 100 --cpu 200"
如何獲得兩個部分組成?
'--jvm 100'
'--cpu 200'
我用str.split('--')
和得到的東西,是不是最優的:
''
'jvm 100'
'cpu 200'
我想正則表達式,但不能弄明白。
我有一個Python字符串是這樣的:如何將字符串拆分爲以「 - 」開頭的部分?
str = "--jvm 100 --cpu 200"
如何獲得兩個部分組成?
'--jvm 100'
'--cpu 200'
我用str.split('--')
和得到的東西,是不是最優的:
''
'jvm 100'
'cpu 200'
我想正則表達式,但不能弄明白。
爲什麼不添加這些--
再次
input = "--jvm 100 --cpu 200"
values = ["--%s" % item for item in input.split("--") if item]
結果:[ '--jvm 100', '200 --cpu']
假設你正在試圖獲得的來自所有參數的值,您應該使用參數解析包來執行此操作。
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
以上只是一個例子,所以您需要調整它以滿足您的需求。
正則表達式,你可以做這樣的:
re.findall(r'--.*?(?=\s+--|$)', str)
>>> import re
>>> re.findall(r'--\w+ \d+', str)
['--jvm 100', '--cpu 200']
它看起來像你解析命令行參數,你有沒有考慮['argparse'(https://開頭的文檔。 python.org/3/library/argparse.html)? – jonrsharpe
或[Click](http://click.pocoo.org),這是一個非常易於使用的命令行處理包。 – Wolf
你應該更新你的答案,解釋你爲什麼要這樣做。 – Soviut