我不熟悉正則表達式,有人可以幫我用這個例子嗎? 我有蟒蛇API調用輸出JSON,JSON的是這樣的:我如何從正則表達式得到一個字符串python
{
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
如何使用重新找到在這種情況下ca4e0240d6ce447554f805e118928
?
在此先感謝!
我不熟悉正則表達式,有人可以幫我用這個例子嗎? 我有蟒蛇API調用輸出JSON,JSON的是這樣的:我如何從正則表達式得到一個字符串python
{
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
如何使用重新找到在這種情況下ca4e0240d6ce447554f805e118928
?
在此先感謝!
你不需要正則表達式這一點,你需要basename
解壓路徑分隔字符串中最右邊部分:
import os
d = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
print(os.path.basename(d["key"]))
結果:
ca4e0240d6ce447554f805e118928
(注意,這也適用於Windows ,即使標準路徑分隔符是\
)
替代方式(仍然沒有正則表達式),使用str.rpartition
:
print(d["key"].rpartition("/")[2])
正則表達式:刪除之前的所有斜線斜線(貪婪):
print(re.sub(".*/","",d["key"]))
您還可以使用str.split()
有這樣的例子所需輸出:
a = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
print(a["key"].split("/")[-1])
或者,如果您輸出將同時具有'/'
和/或'\'
,您可以使用這樣的lambda函數:
get_string = lambda x: x["key"].split("/")[-1] if '/' in x["key"] else x["key"].split("\\")[-1]
print(get_string(a))
雙方將輸出:
'ca4e0240d6ce447554f805e118928'
你可以做到這一點,如果你堅持使用正則表達式,它會爲雙方/
和\
工作,但是這完全沒有必要,你應使用os.path
模塊:
import re
d = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
match = re.search(r"[/|\\](\w+)$", d["key"]).groups()[0]
print(match)
你不應該使用正則表達式來解析Json。 –