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

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

從 Binary 解碼為 String 成 Set 將 string 拆分為

從 Binary 解碼為 String 成 Set 將 string 拆分為

ibeautiful 2023-01-04 13:35:34
我有一個問題。我編寫了以二進制模式(為了速度)讀取文件的代碼,然后將我從正則表達式匹配中讀取的內容解碼為一組。問題在于該集合采用這些解碼后的字符串并將它們轉換為字符。如果您有“14(xx) 23(WP)”,正則表達式將得到 WP 和 xx。應該發生的是,它隨后將獲取 WP 和 xx 并將其作為一個元素放入 logbinset 中。然而,當它出現時,它變成 {'W', 'P', 'x', 'x'} 而不是 {"WP", "xx"} 我在使用列表時沒有這個問題。但是我想避免使用列表,因為它包含重復項并且我不需要重復值。此外,集合的讀取和迭代速度更快,我不需要額外的代碼行來確保我的列表不會重復。為什么我的琴弦會發生這種分裂?我還嘗試在不解碼的情況下接收二進制文件,但 Set 出于某種原因將其轉換為 Int。我的程序和 Python 的集合結構有什么問題?:def odfs_bin_conversion_table_check(bintablecsv, filename):bincsv_df = pd.read_csv(bintablecsv)setbincsv_df = set(bincsv_df['MicronBin'])with open(filename, "rb", buffering=102400) as lines:    regex = re.compile(rb"\d+\((.+)\)\s+\d+\((.+)\)")    logbinset = set()    logbinlist = []    missingbins = ""    for match in filter(bool, map(regex.search, lines)):  # if search in lines, put it in match        #logbinset.update(match.group(1))  # put matches inside logbinset        logbinset.update((match.group(1)).decode('UTF-8','strict'))        logbinlist.append((match.group(1)).decode())        print(match.group(1))        #print((match.group(1)).decode() + " " + (match.group(1)).decode()) #visual check. Can be commented out    for x in logbinset:        print(x)        if x not in setbincsv_df:            print(type(x))            #missingbins += x.decode() + ","    if len(missingbins) > 0:        return missingbins[:-1] + " are not in conversion table"
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

這與正則表達式或以二進制模式讀取文件完全無關。


set.update將其參數視為可迭代對象,并將可迭代對象的每個元素添加到集合中。字符串是可迭代的,其中迭代產生單個字符:


>>> for x in 'WP':

...     print(x)

W

P

因此,對于set.update,這會產生一組字符:


>>> s = set()

>>> s.update('WP')

>>> s

{'W', 'P'}

要將字符串"WP"作為一個項目添加到集合中,請使用以下add方法:


>>> s = set()

>>> s.add('WP')

>>> s

{'WP'}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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