亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中分割前綴和后綴?

如何在python中分割前綴和后綴?

梵蒂岡之花 2023-09-19 14:21:45
我有一個大文本文件,其中包含如下表所示的輸入列表。我需要的是將其分成不同的列(前綴、根和后綴)。他們之間有-和。#我需要一個公式來用-和分隔它們#;或者如果有斜杠/,則應取第一部分并忽略斜杠后面的單詞;或者如果這個詞在里面,{}它也應該忽略它。Input             Outputform              prefix        root         suffix    ----------        -------       -------      -------jalan                           jalanba-jalan          ba            jalanpem-porut#an      pem           porut        andaun #kulu                      daun         kuludaun#kulu                       daun         kulutarik-napas       tarik         napastarik#napas                     tarik        napasn-cium #bo        n             cium         bowarau/araw                       arauimbaw//nimbaw                   imbawdengo | nengo                   dengododop=am                        dodop        am{di} dalam                      dalamdi {dalam}                      di
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

這是通過 Pythonre庫使用正則表達式對您所要求的內容進行粗略的近似。

import?re

m?=?re.match(r'(?:\{[^-#{}/]+\})?(?:([^-#{}/]+)-)?([^-#{}/]+)(?:/[^-#{}/]+)?(?:#([^-#{}/]+))?',?word)
if?m:
????prefix,?root,?suffix?=?m.groups()

您的示例似乎也有=|作為分隔符,但是一旦您了解了它是如何工作的,擴展它以允許這些分隔符應該相對簡單。

簡而言之,如果正則表達式不匹配,則re.match()返回False,否則返回一個匹配對象,該對象的.groups()方法包含與正則表達式中分組括號匹配的文本。(?:...)括號是非分組的,括號中沒有?:緊跟在左括號后面的捕獲成組。

表達式可以分為以下幾種:

  • (?:\{[^-#{}/]+\})?- 非分組表達式可跳過其中的任何內容{braces}

  • (?:([^-#{}/]+)-)?- 破折號之前任何內容的分組表達式的非分組包裝器-

  • ([^-#{}/]+)- 主根 - 分組表達式以捕獲與分隔符之一不匹配的文本

  • (?:/[^-#{}/]+)?- 非分組表達式忽略斜杠后的任何內容

  • (?:#([^-#{}/]+))?- 與破折號類似,捕獲 后的任何后綴#,用非分組包裝器圍繞整個組,然后對分隔符后的文本進行分組捕獲

乍一看這似乎令人生畏,但是一旦您破譯了第一對,您就應該了解它們是如何工作的。讓我們更詳細地檢查一下破折號表達式。

  • (?:- 我們需要一個非捕獲組將所有這些標記為可選,放在最后

  • (- 將分組括號之間的任何匹配文本捕獲到.group()

  • [^-#{}/]- 匹配不是-or?#or?{or or?}or的單個字符/

  • +- 實際上,前面的一個或多個,盡可能多

  • )- 捕獲結束

  • -- 只要所有這些都以破折號結尾-

  • )?- 所有這些都是可選的;如果跳過此步驟將允許整體表達式匹配,則正則表達式引擎會(但如果可能的話,它仍然會更喜歡匹配 - 這稱為“貪婪匹配”)。

請注意如何[^-#{}/]+不斷出現在所有這些組中。我們不想讓我們捕獲的文本與分隔符之一匹配。

您沒有指定如何處理空格,因此這只是將它們視為任何其他字符。也許您也想在它們與分隔符相鄰時將它們排除在組之外?


查看完整回答
反對 回復 2023-09-19
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號