簡體   English   中英

如何刪除 Python 中某個字符之前的所有內容

[英]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 並刪除前面的所有內容,以便我將版本作為字符串?

對正確方向的任何指示感到高興。

謝謝

如果要版本號,可以用連字符(-)分割字符串嗎? 還是您只需要依賴點?

請參閱下面對rsplitjoin的使用,這可以幫助您。

>>> 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'
>>> 

您可以使用錨$從行的結束標記構建正則表達式。

使用您自己的描述,使用正則表達式:

(\d\d\.[^.]*)\.[^.]*$

演示

如果您想包含最后一個字符,只需移動捕獲括號:

(\d\d\.[^.]*\.[^.]*)$

演示

解釋:

(\d\d\.[^.]*\.[^.]*)$

 ^  ^                    #digits
      ^                  # a literal '.'
        ^                # anything OTHER THAN a '.'
            ^            # literal '.'
               ^         # anything OTHER THAN a '.'
                     ^   # end of line

假設我理解正確,有兩種方法可以做到這一點:

包括兩者,因為我可能無法正確理解這一點,並且出於完整性原因。 我認為拆分/部分解決方案更清潔,特別是當“某些字符”是一個點時。

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM