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

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

有沒有辦法從文本文件中帶括號的數字中提取值?

有沒有辦法從文本文件中帶括號的數字中提取值?

慕村9548890 2021-12-16 15:50:38
我有一個非?;镜膯栴},但我沒有在互聯網上找到任何“漂亮”的解決方案。我想要的只是從有字符串和括號的行中提取數字。例如,我有一個輸出文本文件如下:test: [1, 50, 200]我想提取值 1、50 和 200,以便制作這些數字的 numpy 數組。這個問題已經通過一些拆分和剝離解決了,但我覺得這個解決方案不是很優雅。
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

你可以使用一個非常幼稚的正則表達式:


import numpy as np

import re


nums = map(int, re.findall(r'\d+', 'test: [1, 50, 200]'))

print(np.array([n for n in nums]))

# [  1  50 200]

另一種選擇是使用正則表達式來提取整個列表,然后使用literal_eval:


import numpy as np

import re

from ast import literal_eval


li = re.search(r'(\[.*\])', 'test: [1, 50, 200]').group()

print(np.array(literal_eval(li)))

# [  1  50 200]


查看完整回答
反對 回復 2021-12-16
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我實際上可能會使用涉及拆分或正則表達式的東西來進行一些錯誤檢查和安全性 --- 以確保輸入中沒有隱藏任何惡意內容。但是你可以做這樣的事情。


我假設你在一個字符串變量中有你的文本行line。然后你可以做


from ast import literal_eval

line = "test: [1, 50, 200]"    # or whatever your line is

array = literal_eval(line.partition(":")[2].strip())

但要小心,因為eval在不確定的輸入上運行是危險的。


查看完整回答
反對 回復 2021-12-16
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

ast.literal_eval 給出一種解決方案:


import ast

s = 'test: [1, 50, 200]'

ast.literal_eval(s.split(':')[1].strip())


#evaluates to [1, 50, 200]


查看完整回答
反對 回復 2021-12-16
  • 3 回答
  • 0 關注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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