我試圖讓許多值了相當複雜的字符串,它看起來像這樣的循環,通過價值觀 -蟒蛇 - 在一個字符串
s = '04/03 23:50:06:242[76:Health]: (mem=188094936/17146904576) Queue Size[=:+:-] : Core[Compiler:0:0:0,HighPriority:0:74:74,Default:6:1872:1874,LowPriority:0:2:2]:Special[Special:0:2:2]:Event[Event:0:0:0]:Comm[CommHigh:0:1134:1152,CommDefault:0:4:4]'
這些都是我需要掃描的價值觀 -
list = ['Compiler', 'HighPriority', 'Default', 'LowPriority', 'Special', 'Event', 'CommHigh', 'CommDefault']
我的意圖是獲得每個字符串後面的3個數字,所以在HighPriority
的例子中,我會得到[0, 74, 74]
,然後我可以對每個項目執行一些操作。
我已經使用了下面的內容,但是它並沒有說明字符串的結尾不是逗號。
def find_between(s, first, last):
try:
start = s.index(first) + len(first)
end = s.index(last, start)
return s[start:end]
except ValueError:
return ""
for l in list:
print l
print find_between(s, l + ':', ',').split(':')
我認爲最好的方法來解決這個問題就是要學會用模塊的標準庫的「重」。 – mkiever
是的,我的重複是可怕的。我嘗試過使用re,但是當我看到像'\ d \ w \ ++ \?\(\)'這樣的代碼塊時,我凍結了,因爲這對我來說並不容易: – whoisearth
像'r = re .search('Compiler:([0-9] +):([0-9] +):([0-9] +)',s)'應該讓你開始使用'r.groups()'以獲得包含數字的三個子字符串 – mkiever