[英]How to split a string on multiple pattern using pythonic way (one liner)?
我試圖從沒有擴展名的文件指針中提取文件名。 我的文件名如下:
this site:time.list
, this.list
, this site:time_sec.list
, that site:time_sec.list
等等。 此處所需的文件名始終位於空格或點之前。
目前,我正在執行此操作以從文件名前的空格獲取文件,並在文件名中添加點。
search_term = os.path.basename(f.name).split(" ")[0]
和
search_term = os.path.basename(f.name).split(".")[0]
預計文件名輸出: this
, this
, this
, that
。
我怎樣才能將以上兩種結合成一種襯里和蟒蛇的方式?
提前致謝。
使用如下正則表達式, [ .]
將在空格或點字符上分割
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.