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

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

如何隨機(jī)化傳入格式未知的字符串中的數(shù)字?

如何隨機(jī)化傳入格式未知的字符串中的數(shù)字?

慕俠2389804 2023-05-23 10:51:17
對于 NLP 項(xiàng)目,我需要根據(jù)訓(xùn)練示例生成用于訓(xùn)練目的的隨機(jī)數(shù)字字符串。數(shù)字以字符串形式出現(xiàn)(來自 OCR)。讓我將此處的問題陳述限制為百分比值,其中到目前為止觀察到的格式包括以下格式或指出的格式特征的任何有意義的組合:'60'       # no percentage sign, precision 0, no other characters'60.00'    # no percentage sign, precision 2, dot for digit separation'60,000'   # no percentage sign, precision 3, comma for digit separation'60.0000'  # no percentage sign, precision 4, dot for digit separation'60.00%'   # same as above, with percentage sign'60.00 %'  # same as above, with whitespace'100%'     # three digits, zero precision, percentage sign'5'        # single digit'% 60'     # percentage sign in front of the number, whitespace我的目標(biāo)是在保留每個(gè)字符格式的同時(shí)隨機(jī)化數(shù)字(例外:由于數(shù)字?jǐn)?shù)量不同,當(dāng) 5.6 可以隨機(jī)化為 18.7 或 100.0 時(shí),反之亦然)。百分比數(shù)值應(yīng)介于 0 和 100 之間。舉幾個(gè)我需要它的例子:input  = '5'  # integer-like digitoutput = [  '7',            '18',           '100'] input  =  '100.00 %' # 2-precision float with whitespace & percentage signoutput = [  '5.38 %',            '38.05 %',           '100.00 %']  inpput =  '% 60,000' # percentage sign, whitespace, 4-precision float, comma separatoroutput = ['% 5,5348',           '% 48,7849',           '% 100,0000'] 我怎么能這樣做?解決方案可以是概念性的,也可以是代碼示例。解決方案需要反映真實(shí)數(shù)據(jù)中可能出現(xiàn)的格式到目前為止,我所知道的最好的方法是為我能想到的每種格式變體強(qiáng)制手寫 if 子句。
查看完整描述

2 回答

?
胡子哥哥

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

以下內(nèi)容似乎適用于您提供的示例輸入。我們只對找到前導(dǎo)整數(shù)數(shù)字和后面跟有更多數(shù)字的潛在分隔符感興趣。我們實(shí)際上不需要尋找任何空格或百分號,因?yàn)闊o論如何我們只對替換任何給定匹配項(xiàng)中的數(shù)字感興趣。如果我錯(cuò)過了什么,請告訴我:


import re


pattern = "\\d{1,3}((?P<separator>[,.])(?P<floating>\\d+))?"


strings = (

    "60",

    "60.00",

    "60,000",

    "60.0000",

    "60.00%",

    "60.00 %",

    "100%",

    "5",

    "% 60",

    "% 60,000"

)


def randomize(match):

    from random import uniform


    integer, floating = divmod(uniform(0, 100), 1)


    def get_chars():

        yield str(int(integer))

        if match.group("separator") is not None:

            yield match.group("separator")

            precision = len(match.group("floating"))

            yield f"{{:.{precision}f}}".format(floating)[2:]

    return "".join(get_chars())

        

    


for string in strings:

    print(re.sub(pattern, randomize, string))

輸出:


29

95.08

51,507

9.1783

0.80%

6.56 %

16%

22

% 27

% 93,174

>>> 


查看完整回答
反對 回復(fù) 2023-05-23
?
阿波羅的戰(zhàn)車

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

可以調(diào)用以下函數(shù)來生成您的情況所需的隨機(jī)數(shù)。您可以進(jìn)一步修改它以最適合您的情況。


import numpy as np

def random_gen():

    precison = np.random.randint(0,6)

    val = np.random.uniform(0, 100)

    val = round(val,int(precison))

    val = str(val)

    

    white_space = np.random.randint(0,3)

    rand_index = np.random.randint(0,len(val))

    val = val[0:rand_index] + ' '*white_space + val[rand_index:]

    

    if np.random.randint(0,2) > 0:

        if np.random.randint(0,2) > 0:

            val = val + "%"

        else:

            val = "%" + val

    return val


random_gen()      


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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