.rsplit() | return empty string instead of `IndexError: list index out of range`
.rsplit() | return empty string instead of `IndexError: list index out of range`
是否有一个 return 是空字符串 ""
并且不会崩溃的替代函数,而不是 rsplit()
?
我想 return "second-half" key
的字符串,并将其放在相应 value
的字符串。但是,密钥名称中并不总是包含 ~
。
如果它没有 "标签": ~tag
,那么我想 return 一个空字符串.
注意:如果没有字典理解,这可能会更容易:
import random
DLM = '~'
programmatic_dict = {key: '{} {} {}'.format(val, DLM, key.rsplit(DLM, 1)[1]) if random.randint(0,9) == 9 else val for key, val in programmatic_dict.items()} # 10% tag
最小代码:(导致与上述代码相同的错误)。
thisdict = {
"brand~tag": "Ford",
"model~tag": "Mustang",
"year": 1964
}
DLM = '~'
for k in thisdict.keys():
print(k.rsplit(DLM, 1)[1])
输出:
tag
tag
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-29-036aa5073b32> in <module>
6
7 for k in thisdict.keys():
----> 8 print(k.rsplit(DLM, 1)[1])
IndexError: list index out of range
如果我还有什么要补充的,请告诉我post。
如果您确实需要手头的标签,或者空字符串,请编写您自己的匹配函数,最好基于正则表达式。示例:
import re
thisdict = {
"brand~test": "Ford",
"model~test": "Mustang",
"year": 1964
}
r = re.compile(r".+(~.+)")
def my_match(k):
m = r.match(k)
if m:
return m[1][1:]
else:
return ""
for k in thisdict.keys():
print(my_match(k))
是否有一个 return 是空字符串 ""
并且不会崩溃的替代函数,而不是 rsplit()
?
我想 return "second-half" key
的字符串,并将其放在相应 value
的字符串。但是,密钥名称中并不总是包含 ~
。
如果它没有 "标签": ~tag
,那么我想 return 一个空字符串.
注意:如果没有字典理解,这可能会更容易:
import random
DLM = '~'
programmatic_dict = {key: '{} {} {}'.format(val, DLM, key.rsplit(DLM, 1)[1]) if random.randint(0,9) == 9 else val for key, val in programmatic_dict.items()} # 10% tag
最小代码:(导致与上述代码相同的错误)。
thisdict = {
"brand~tag": "Ford",
"model~tag": "Mustang",
"year": 1964
}
DLM = '~'
for k in thisdict.keys():
print(k.rsplit(DLM, 1)[1])
输出:
tag
tag
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-29-036aa5073b32> in <module>
6
7 for k in thisdict.keys():
----> 8 print(k.rsplit(DLM, 1)[1])
IndexError: list index out of range
如果我还有什么要补充的,请告诉我post。
如果您确实需要手头的标签,或者空字符串,请编写您自己的匹配函数,最好基于正则表达式。示例:
import re
thisdict = {
"brand~test": "Ford",
"model~test": "Mustang",
"year": 1964
}
r = re.compile(r".+(~.+)")
def my_match(k):
m = r.match(k)
if m:
return m[1][1:]
else:
return ""
for k in thisdict.keys():
print(my_match(k))