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

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

用 Python 替換 JSON 文件中的字符。由于大文件(超過 1 GB)而導致編輯問題

用 Python 替換 JSON 文件中的字符。由于大文件(超過 1 GB)而導致編輯問題

aluckdog 2021-10-26 13:35:29
我創建了一個小腳本來比較兩個圖像的相似程度。這包含在一個名為 的文件中compare_image.py,該文件僅包含一個函數compare. 該文件位于應用程序目錄中。我正在嘗試models.py使用該行從文件中導入它import compare_image,但嘗試此操作會導致出現錯誤消息ModuleNotFoundError: No module named 'compare_image'。簡化的目錄結構如下所示:myproject└── myapp    ├── __init__.py    ├── admin.py    ├── apps.py    ├── compare_image.py    ├── forms.py    ├── models.py    ├── tests.py    ├── urls.py    └── views.pymyapp是項目中唯一的應用程序。除此之外,webapp 運行良好。我試圖刪除并重新touch荷蘭國際集團的__init__.py文件都無濟于事。我可以compare_image從myapp目錄中的 python shell導入。唯一的導入compare_image.py是 PIL 或標準庫,所以我不認為循環導入是罪魁禍首。一種解決方案是將代碼放入 中models.py,但我不想弄亂這個文件。我想既然這個錯誤看起來很基本,那么 Django 中用戶編寫的腳本可能有一些標準機制,但我在網上找不到任何提及。如果能讓事情更清楚,我很樂意提供有關該項目的更多詳細信息。在此先感謝您的幫助(這個錯誤讓我發瘋了?。?
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

問題可能是a.readlines()因為它將整個文件帶到您的記憶中。在處理大文件時,逐行讀取它會更有趣,如下所示:


with open(fname) as f: 

    for line in f:

        # Do your magic here, on this loop

# No need to close it, since the `with` will take care of that.

如果您的目標是$用 a替換 each \n,它將是這樣的:


with open(fname, "r+") as f: 

    for line in f:

        line.replace("$", "\n")


查看完整回答
反對 回復 2021-10-26
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

為了能夠處理可能的$字符的字符串中的JSON對象,你可以拆分輸入字符串data1與$成片段,由一個加盟片段轉換成字符串一個,直到它可解析為JSON,點你輸出該串并清楚地繼續下一個片段:


import json

candidate = ''

for fragment in data1.split('$'):

    candidate += fragment

    try:

        json.loads(candidate)

        print(candidate)

        candidate = ''

    except json.decoder.JSONDecodeError:

        candidate += '$'

        continue

data1 = '''{}${"a":"$"}${"b":{"c":2}}'''例如,給定,這輸出:


{}

{"a":"$"}

{"b":{"c":2}}


查看完整回答
反對 回復 2021-10-26
  • 2 回答
  • 0 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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