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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從Python中的字符串列表中獲取十進(jìn)制數(shù)/整數(shù)之前的所有值

從Python中的字符串列表中獲取十進(jìn)制數(shù)/整數(shù)之前的所有值

森欄 2022-07-19 16:55:11
我有一個(gè)字符串列表,我想將每個(gè)字符串拆分為一個(gè)浮點(diǎn)數(shù)。如果字符串中沒(méi)有浮點(diǎn)數(shù),我想將它拆分為一個(gè)數(shù)字。它應(yīng)該只拆分一次并返回它之前和之后的所有內(nèi)容,并用逗號(hào)分隔。輸入字符串:['Naproxen  500  Active ingredient  Ph Eur', 'Croscarmellose sodium  22.0 mg Disintegrant  Ph Eur', 'Povidone K90  11.0   Binder 56 Ph Eur', 'Water, purifieda, 'Silica, colloidal anhydrous  2.62  Glidant  Ph Eur', 'Water purified 49 Solvent  Ph Eur', 'Magnesium stearate  1.38  Lubricant  Ph Eur']預(yù)期輸出:['Naproxen',  '500',  'Active ingredient  Ph Eur', 'Croscarmellose sodium',  '22.0 mg',  'Disintegrant  Ph Eur', 'Povidone K90',  '11.0',  'Binder  Ph Eur', 'Water, purifieda', 'Silica, colloidal anhydrous',  '2.62',  'Glidant  Ph Eur', 'Water purified', '49',  'Solvent  Ph Eur', 'Magnesium stearate',  '1.38',  'Lubricant  Ph Eur']我的代碼:for i in newresult:        regex_float_part = re.split(r'\s+(\d+\.\d+)\s+', i, 1)#        print(regex_float_part)#        regex_float_part_n = [item for sublist in regex_float_part for item in sublist]        if regex_float_part:            all_extract.append(regex_float_part)        else:#            regex_integer = r'\s+(\d+(?:\\d+)?)\s+'            regex_integer_part = re.split(r'\s+(\d+(?:\\d+)?)\s+', i, 1)#            regex_integer_part_n = [item for sublist in regex_integer_part for item in sublist]            all_extract.append(regex_integer_part)問(wèn)題在于這個(gè)輸入字符串:'Water purified 49 Solvent  Ph Eur',這并不像預(yù)期的那樣:'Water purified', '49',  'Solvent  Ph Eur'那就是代碼不會(huì)進(jìn)入其他部分。一個(gè)觀察是我的正則表達(dá)式的拆分函數(shù)正在創(chuàng)建一個(gè)列表列表,即 regex_float_part 和 regex_integer_part 是列表列表。誰(shuí)能幫我解決我的代碼沒(méi)有響應(yīng)的字符串的問(wèn)題
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

你的正則表達(dá)式幾乎是正確的,但你必須考慮.到點(diǎn)后面的數(shù)字和數(shù)字可能不存在。這可以這樣實(shí)現(xiàn):

\s+(\d+(?:\.\d+)?)\s+

不同之處在于,您可以通過(guò)在組后使用問(wèn)號(hào)將其添加到可能存在或不存在\.\d+的非捕獲組中:(?:xxxx)(?:xxxx)?


查看完整回答
反對(duì) 回復(fù) 2022-07-19
?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

我建議使用


res = re.match(r'^(?:(?!.*\d\.\d)(.*?)\s*\b(\d+(?:\s*mg)?)\b\s*(.*)|((?:(?!\d+\.\d).)*?)\s*\b(\d+\.\d+(?:\s*mg)?)\b\s*(.*))$', i)

if res:

    all_extract.append(list(filter(None, res.groups())))

請(qǐng)參閱正則表達(dá)式演示。


沒(méi)有注釋代碼的完整Python 演示:


import re


def show():

    newresult = ['Naproxen  500  Active ingredient  Ph Eur','Croscarmellose sodium  22.0 mg Disintegrant  Ph Eur','Povidone K90  11.0   Binder 56 Ph Eur','Water, purifieda','Silica, colloidal anhydrous  2.62  Glidant  Ph Eur','Water purified 49 Solvent  Ph Eur','Magnesium stearate  1.38  Lubricant  Ph Eur']

    all_extract = []

    for i in newresult:

        res = re.match(r'^(?:(?!.*\d\.\d)(.*?)\s*\b(\d+(?:\s*mg)?)\b\s*(.*)|((?:(?!\d+\.\d).)*?)\s*\b(\d+\.\d+(?:\s*mg)?)\b\s*(.*))$', i)

        if res:

            all_extract.append(list(filter(None, res.groups())))

        else:

            print("ONLY INTEGER")

            regex_integer_part = re.split(r'\s+(\d+(?:\.\d+)?)\s+', i, 1)

            all_extract.append(regex_integer_part)

    return all_extract


print(show())

產(chǎn)量


[['Naproxen', '500', 'Active ingredient  Ph Eur'], ['Croscarmellose sodium', '22.0 mg', 'Disintegrant  Ph Eur'], ['Povidone K90', '11.0', 'Binder 56 Ph Eur'], ['Water, purifieda'], ['Silica, colloidal anhydrous', '2.62', 'Glidant  Ph Eur'], ['Water purified', '49', 'Solvent  Ph Eur'], ['Magnesium stearate', '1.38', 'Lubricant  Ph Eur']]


查看完整回答
反對(duì) 回復(fù) 2022-07-19
  • 2 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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