[英]How to remove everything before certain character in Python
我是 python 的新手,並且正在努力完成一項任務:
我有一個可以包含任何內容的字符串,但它總是以相同的方式“結束”。 它可以只是一個文件名、一個完整路徑,或者只是一個以版本號結尾的隨機字符串。
例子:
C:\Users\abc\Desktop\string-anotherstring-15.1R7-S8.1
string-anotherstring-15.1R7-S8.1
string-anotherstring.andanother-15.1R7-S8.1
總是相同的(從最后看)是,如果你到達第二個點和它前面的 go 2 個字符,你總是匹配我感興趣的部分。在某個字符串之后切割所有內容是“容易, " 我自己解決了 - 這就是字符串現在以版本結尾的原因:)
有沒有辦法告訴 python,“查找字符串后面的第二個點和前面的 go 2 並刪除前面的所有內容,以便我將版本作為字符串?
對正確方向的任何指示感到高興。
謝謝
如果要版本號,可以用連字符(-)分割字符串嗎? 還是您只需要依賴點?
>>> a = 'string-anotherstring.andanother-15.1R7-S8.1'
>>> a.rsplit('-')
['string', 'anotherstring.andanother', '15.1R7', 'S8.1']
>>> a.rsplit('-')[-2:] #Get everything from second last to the end
['15.1R7', 'S8.1']
>>> '-'.join(a.rsplit('-')[-2:]) #Get everything from second last to the end, and join them with a hyphen
'15.1R7-S8.1'
>>>
對於使用點,使用相同的方式
>>> a
'string-anotherstring.andanother-15.1R7-S8.1'
>>> data = a.rsplit('.')
>>> [data[-3][-2:]]
['15']
>>> [data[-3][-2:]] + data[-2:]
['15', '1R7-S8', '1']
>>> '.'.join([data[-3][-2:]] + data[-2:])
'15.1R7-S8.1'
>>>
假設我理解正確,有兩種方法可以做到這一點:
包括兩者,因為我可能無法正確理解這一點,並且出於完整性原因。 我認為拆分/部分解決方案更清潔,特別是當“某些字符”是一個點時。
>>> msg = r'C:\Users\abc\Desktop\string-anotherstring-15.1R7-S8.1'
>>> re.search(r'.*(..\..*)', msg).group(1)
'S8.1'
>>> parts = msg.split('.')
>>> ".".join((parts[-2][-2:], parts[-1]))
'S8.1'
對於您的示例,您可以通過分隔符“-”拆分字符串,然后加入最后兩個索引。 像這樣:
txt = "string-anotherstring-15.1R7-S8.1"
x = txt.split("-")
y = "".join(x[-2:])
print(y) # outputs 15.1R7S8.1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.