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

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

從字符串中創(chuàng)建兩個列表,這些字符串在方括號之間包含和不包括

從字符串中創(chuàng)建兩個列表,這些字符串在方括號之間包含和不包括

皈依舞 2021-05-30 10:58:13
支持我們有一個像這樣的字符串:s = u'apple banana lemmon (hahaha) dog cat whale (hehehe) red blue black'我要創(chuàng)建以下列表:including = ['hahaha', 'hehehe'] excluding = ['apple banana lemmon (', ') dog cat whale (', ') red blue black']第一個列表是直接使用正則表達(dá)式:including = re.findall('\((.*?)\)',s)但是我無法為其他列表獲得類似的信息。你可以幫幫我嗎?先感謝您!!
查看完整描述

3 回答

?
MM們

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊

excluding = re.split('|'.join(including), s)

對于您知道包含信息將不包含特殊字符或正則表達(dá)式定義的簡單情況。

如果您不確定是否會出現(xiàn)這種情況:

re.split('|'.join(map(re.escape, including)), s)

這將轉(zhuǎn)義特殊的正則表達(dá)式字符,否則將導(dǎo)致re.split函數(shù)功能異常


查看完整回答
反對 回復(fù) 2021-06-01
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊

使用正則表達(dá)式

a = re.findall('\)?[^()]*\(?', s)

excluded = a[::2]

included = a[1::2]

print(included, excluded, sep='\n')


['hahaha', 'hehehe', '']

['apple banana lemmon (', ') dog cat whale (', ') red blue black']

照顧空字符串

a = re.findall('\)?[^()]*\(?', s)

excluded = [*filter(bool, a[::2])]

included = [*filter(bool, a[1::2])]

print(included, excluded, sep='\n')


['hahaha', 'hehehe']

['apple banana lemmon (', ') dog cat whale (', ') red blue black']

沒有正則表達(dá)式

from itertools import cycle


def f(s):

  c = cycle('()')

  a = {'(': 1, ')': 0}

  while s:

    d = next(c)

    i = s.find(d)

    if i > -1:

      j = a[d]

      yield d, s[:i + j]

      s = s[i + j:]

    else:

      yield d, s

      break


included = []

excluded = []


for k, v in f(s):

  if k == '(':

    excluded.append(v)

  else:

    included.append(v)


print(included, excluded, sep='\n')


['hahaha', 'hehehe']

['apple banana lemmon (', ') dog cat whale (', ') red blue black']

相同想法但不覆蓋 s

from itertools import cycle


def f(s):

  c = cycle('()')

  a = {'(': 1, ')': 0}

  j = 0

  while True:

    d = next(c)

    i = s.find(d, j)

    if i > -1:

      k = a[d]

      yield d, s[j:i + k]

      j = i + k

    else:

      yield d, s[j:]

      break


included = []

excluded = []


for k, v in f(s):

  if k == '(':

    excluded.append(v)

  else:

    included.append(v)


print(included, excluded, sep='\n')


['hahaha', 'hehehe']

['apple banana lemmon (', ') dog cat whale (', ') red blue black']


查看完整回答
反對 回復(fù) 2021-06-01
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗 獲得超6個贊

您可以使用正向后視和正向前瞻來拆分括號之間的單詞:


>>> re.split(r'(?<=\().*?(?=\))', s)

['apple banana lemmon (', ') dog cat whale (', ') red blue black']


查看完整回答
反對 回復(fù) 2021-06-01
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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