第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

從列表中抓取后無法操作字符串

從列表中抓取后無法操作字符串

紅顏莎娜 2023-05-16 14:38:14
我希望刪除用于解析的規(guī)則中的最后一條語句。語句用@字符封裝,規(guī)則本身用模式標(biāo)簽封裝。我想要做的只是刪除最后一條規(guī)則語句。我目前實(shí)現(xiàn)這一目標(biāo)的想法是這樣的:打開規(guī)則文件,將每一行作為一個元素保存到列表中。選擇包含正確規(guī)則 ID 的行,然后將規(guī)則模式另存為新字符串。反轉(zhuǎn)保存的規(guī)則模式。刪除最后一條規(guī)則語句。重新反轉(zhuǎn)規(guī)則模式。添加尾隨模式標(biāo)記。所以輸入看起來像:<pattern>@this is a statement@ @this is also a statement@</pattern>輸出將如下所示:<pattern>@this is a statement@ </pattern>我目前的嘗試是這樣的:with open(rules) as f:    lines = f.readlines()string = ""for line in lines:    if ruleid in line:        position = lines.index(line)        string = lines[position + 2] # the rule pattern will be two lines down                                     # from where the rule-id is located, hence                                      # the position + 2def reversed_string(a_string): #reverses the string    return a_string[::-1] def remove_at(x): #removes everything until the @ character    return re.sub('^.*?@','',x) print(reversed_string(remove_at(remove_at(reversed_string(string)))))這將反轉(zhuǎn)字符串,但不會刪除最后一條規(guī)則語句,一旦它被反轉(zhuǎn)。僅運(yùn)行該reversed_string()函數(shù)將成功反轉(zhuǎn)字符串,但嘗試通過該remove_at()函數(shù)運(yùn)行相同的字符串將根本不起作用。但是,如果您手動創(chuàng)建輸入字符串(到相同的規(guī)則模式),并放棄打開和抓取規(guī)則模式,它將成功刪除尾隨的規(guī)則語句。成功的代碼如下所示:string = '<pattern>@this is a statement@ @this is also a statement@</pattern>'def reversed_string(a_string): #reverses the string    return a_string[::-1] def remove_at(x): #removes everything until the @ character    return re.sub('^.*?@','',x) print(reversed_string(remove_at(remove_at(reversed_string(string)))))另外,刪除完成后如何添加模式標(biāo)簽?
查看完整描述

1 回答

?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個贊

您正在閱讀的行可能\n在末尾有一個,這就是您的替代品不起作用的原因。這個問題可以指導(dǎo)您閱讀沒有換行的文件。

在這些選項(xiàng)中,一個可能是像這樣刪除\nusing?rstrip() :

string?=?lines[position?+?2].rstrip("\n")

現(xiàn)在,關(guān)于替換,我認(rèn)為你可以使用這個正則表達(dá)式來簡化它:

@[^@]+@(?!.*@)

它由以下部分組成:

  • @[^@]+@匹配一個@后跟一個或多個不是an的字符@,然后是另一個@。

  • (?!.*@)是一個否定的先行檢查,以檢查@前面沒有找到任何其他字符的零次或多次出現(xiàn)。

此表達(dá)式應(yīng)與最后一條語句匹配,您不需要反轉(zhuǎn)字符串:

re.sub("@[^@]+@(?!.*@)",?"",?string)


查看完整回答
反對 回復(fù) 2023-05-16
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號