簡體   English   中英

如何使用pythonic方式(一個線性)在多個模式上拆分字符串?

[英]How to split a string on multiple pattern using pythonic way (one liner)?

我試圖從沒有擴展名的文件指針中提取文件名。 我的文件名如下:

this site:time.listthis.listthis site:time_sec.listthat site:time_sec.list等等。 此處所需的文件名始終位於空格或點之前。

目前,我正在執行此操作以從文件名前的空格獲取文件,並在文件名中添加點。

search_term = os.path.basename(f.name).split(" ")[0]

search_term = os.path.basename(f.name).split(".")[0]

預計文件名輸出: thisthisthisthat

我怎樣才能將以上兩種結合成一種襯里和蟒蛇的方式?

提前致謝。

使用如下正則表達式, [ .]將在空格或點字符上分割

re.split('[ .]', os.path.basename(f.name))[0]

如果您拆分一個並拆分另一個仍然返回較小的值,那就是您想要的。 如果沒有,您得到的就是您第一次分裂得到的。 您不需要正則表達式。

search_term = os.path.basename(f.name).split(" ")[0].split(".")[0]

使用正則表達式獲取字符串開頭的第一個單詞:

import re

re.match(r"\w+", "this site:time_sec.list").group()
# 'this'

re.match(r"\w+", "this site:time.list").group()
# 'this'

re.match(r"\w+", "that site:time_sec.list").group()
# 'that'

re.match(r"\w+", "this.list").group()
# 'this'

嘗試這個:

pattern = re.compile(r"\w+")
pattern.match(os.path.basename(f.name)).group()

當您基於以下假設時,請確保文件名內部沒有空格:將空白與要提取的內容分開。 如果您依靠這樣的隱式規則,而不是實際查看要提取和定制顯式表達式以適合內容的字符串,則很有可能會獲得您未曾想過的意外結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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