a = "aajfkdfvf_valid_name0"
b = "gdhdhsdsdeeeeex_valid_name1"
如何在有效之前從我的字串中洗掉亂碼,以便我有這樣的東西 -
valid_name0
valid_name1
uj5u.com熱心網友回復:
如果你的字串總是包含valid單詞,那么你可以嘗試類似 -
a = "aajfkdfvf_valid_name0"
b = "gdhdhsdsdeeeeex_valid_name1"
for s in (a, b):
print(s[s.rfind('valid'):])
因此,即使前綴中包含_或子字串valid,輸出也是正確的。雖然如果您的有效子字串valid多次包含該單詞,那么這將不起作用
uj5u.com熱心網友回復:
我們可以re.sub在這里嘗試使用:
a = "aajfkdfvf_valid_name0"
b = "gdhdhsdsdeeeeex_valid_name1"
inp = [a, b]
output = [re.sub(r'^[^_] _', '', i) for i in inp]
print(output) # ['valid_name0', 'valid_name1']
uj5u.com熱心網友回復:
您可以為此使用拆分連接方法。試試這個:
a = "aajfkdfvf_valid_name0"
valid_a = '_'.join(a.split('_')[1:])
# 'valid_name0'
# can use maxsplit to split only once at the first _ and then take the remaining part of the string
another_valid_a = a.split('_',1)[1]
# valid_name0
基本上,這是在 _ 處拆分原始字串,然后忽略第一個元素并使用 _ 再次連接剩余部分。
uj5u.com熱心網友回復:
至少在我看來,其他方法對于這項任務來說似乎有點過度設計。
如果您已經知道亂碼出現在第一個下劃線_ 字符之前,您可以只做一次str.split并丟棄第一個拆分結果:
a = "aajfkdfvf_valid_name0"
b = "gdhdhsdsdeeeeex_valid_name1"
def clean_string(s: str) -> str:
return s.split('_', 1)[1]
print(clean_string(a)) # valid_name0
print(clean_string(b)) # valid_name1
uj5u.com熱心網友回復:
你可以試試這個。
"_".join(a.split("_")[1:]) # split string by "_" and rejoin all but the first part
"_".join(b.split("_")[1:])
#or
ungibberish = lambda x: "_".join(x.split("_")[1:]) # same thing but as a function call
for i in [a,b]:
ungibberish(i)
輸出:
valid_name0
valid_name1
uj5u.com熱心網友回復:
如果您確定只需要一個“_”,則字串拆分將有所幫助:
fixed_a = '_'.join(a.split('_')[1:])
最壞的情況是,這種模式不是您正在查看的唯一模式。然后,檢查這個:
您需要確切地知道您的“有效名稱”是什么樣的,您可以制作一個正則運算式來滿足您的需求。檢查標準、模式和所有這些。我很確定是否有模式,正則運算式可以處理。我建議這個網站這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/477527.html
標籤:Python
上一篇:在JUnit5中,為什么postMethod會拋出TransactionSystemException而不是回傳帶有錯誤請求的ResponseEntity?
