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

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

從文本文件中提取數字,不包括日期

從文本文件中提取數字,不包括日期

幕布斯6054654 2021-06-04 14:12:41
我有從文本文件中提取數字的簡單代碼。它看起來像這樣:import recodata = []with open(r"filename.txt") as file:    for line in file:        for i in re.findall(r'\d+(?:\.\d+)?', line):            codata.append(i)文本包含很多財務數據和很多我不想要的日期。有沒有一種簡單的方法可以修改代碼以排除日期?日期通常遵循這些格式(我使用特定日期作為格式示例,但它可以是任何日期):August 31, 20188/31/20188/31/18August 2018FY2018CY2018fiscal year 2018calendar year 2018這是一個例子。我有一個包含以下文本的文本文件:“就本節所述的財務分析而言,“隱含的合并對價”一詞是指交易中規定的每股對價的隱含價值 80.38 美元,包括 20.25 美元的對價現金部分和隱含價值根據 XXX 2018 年 7 月 14 日每股 218.67 美元的收盤價計算的 0.275 股 XXX 普通股的股票部分?!碑斘疫\行我上面發布的代碼時,我從print(codata)以下位置得到這個輸出:['80.38', '20.25', '0.275', '218.67', '14', '2018']我想得到這個輸出:['80.38', '20.25', '0.275', '218.67']所以我不想拿起與 date 相關的數字 14 和 2018 "July 14, 2018"。如果我知道文本中與日期相關的任何數字都具有我上面概述的格式,我應該如何修改我的代碼以獲得所需的輸出?
查看完整描述

3 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

很難準確理解你想要什么。但是如果你只是在尋找數字,你可以這樣做(如果它有小數,請改用浮點數)。


import re

codata = []

with open(r"filename.txt") as file:

    for line in file:

        for i in re.findall(r'\d+(?:\.\d+)?', line):

            try:

                codata.append(int(i))

            except:

                continue


查看完整回答
反對 回復 2021-06-15
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

考慮到文本示例,我假設每個價格都以 $ 符號開頭,在這種情況下,您可能正在尋找以下正則表達式:

r"(?<=\$)\d+\.?\d*(?= )"

結果將是:

['80.38', '20.25', '218.67']

或者,如果您想要列表中的 $ 符號,則正則表達式將是:

r"\$\d+\.?\d*(?= )"

在這種情況下的結果:

['$80.38', '$20.25', '$218.67']

澄清一下,(?<=\$)意味著我們的匹配需要通過 $ 符號進行,但 $ 符號不會添加到輸出中。(?= ) 表示價格后面應該跟空格。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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