![](/img/trans.png)
[英]How to replace certain characters after other certain characters in a string, Python?
[英]How to remove characters after 2 certain characters in a Python string?
可以說我有一堆字符串,它們只能采用以下格式:
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
讓我解釋。 有時有時使用#
或$
字符來分隔字符串。 但是其他時候卻不是。
我想刪除出現在#
或$
之后的部分。 如果它只是一個特殊字符,即#
,我可以這樣做:
string = string.split('#')[0]
但是,如何快速而優雅地為2個特殊字符做呢? 還假設以下幾點:
謝謝。
常用表達。
import re
re.sub('[$#].*', '', string_to_modify)
使用正則表達式!
import re
new_string = re.sub(r"(#|$).*$", "", string)
如果要避免使用正則表達式,則一種可能性是:
string = min(string.split('#')[0], string.split('$')[0])
使用re.split()。
import re
print(re.split("#|$","STRING#OTHER_STRING#OTHER_STRING_2"))
分割前使用替換 :
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
print(format1.replace('#', '$').split('$')[0])
print(format2.replace('#', '$').split('$')[0])
print(format3.replace('#', '$').split('$')[0])
輸出量
substring1
substring1
substring1
您可以使用for
循環來分隔任意數量的定界符。 正則表達式通常比Python str
方法效率低。
def converter(x, delims='#$'):
for delim in delims:
x = x.split(delim, maxsplit=1)[0]
return x
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
for value in [format1, format2, format3]:
print(converter(value))
# substring1
# substring1
# substring1
我認為您可以使用一個列表來維護可以使用的特殊字符,並在查找到每個字符時檢查字符串中是否存在特殊字符,當您執行拆分過程並僅檢索左側部分時,如下所示:
delimters = ["#","$"]
for symbol in delimters:
if symbol in string1:
left_part = string1.split(symbol)[0]
現在這種方法有一些缺點,但在我看來是最簡單的。 問題是,如果您有多個字符串,則需要嵌套循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.