簡體   English   中英

如何使用正則表達式替換 Python 中字典的內容

[英]How to replace the content of a dict in Python using regex

我必須修改一個非常大的JSON文件(36MB),基本上我需要的是刪除整個文件的時間戳。

由於應用程序崩潰后我無法使用 sublime text 或其他 IDE,因此我別無選擇,只能使用 python 手動處理文件。

我想到的過程如下:

  1. 打開 JSON 文件
  2. 將 JSON 文件轉換為 dict
  3. 刪除字典中的時間戳
  4. 將 dict 以 json 格式導出到新文件中。

這是我的問題:

我需要編輯整個 dict 並將 TXX:XX:XX 替換為 ' ' (空字符)。 JSON 文件必須采用 YYYY-MM-DD 格式。

所以假設我有這個日期: 2021-11-02T00:04:03替換時間戳后它應該是: 2021-11-02

再舉一個例子:

2021-10-02T01:04:03應該是2021-10-02

等等。

我知道這個正則表達式T00.{6}適用於案例 00,但其他案例呢? 01, 02, 03, 04 ...等。是否有適用於所有情況的通用正則表達式?

最重要的是,如何在字典中查找所有值並將時間戳替換為""

據我了解,問題是:

  1. 確定給定的字符串是否為####-##-##T##:##:## ,其中 # 是任何數字;
  2. 如果是,則截斷字符串以僅包含 T 之前的部分; 如果沒有,請保持字符串不變。

如果這是正確的,我們可以這樣做:

def truncate_timestamp(potential_date_str):
  pattern = '^([0-9]{4}-[0-9]{2}-[0-9]{2})T[0-9]{2}:[0-9]{2}:[0-9]{2}$'
  match = re.search(pattern, potential_date_str)
  if match:
    return match.group(1)
  else:
    return potential_date_str

這會產生以下結果:

>>> truncate_timestamp('2021-11-02T00:04:03')
'2021-11-02'
>>> truncate_timestamp('Canned Frozen Orange Juice')
'Canned Frozen Orange Juice'

如果成功匹配,則re.search返回真值,否則返回假值。 此處模式中給出的pattern只是透明地編碼了字符串由四位數字組成的事實,后跟一個破折號等,並且具有用於日期部分的捕獲組。 如果我們成功匹配,我們將返回我們捕獲的內容,即日期。 如果不是,這不是時間戳,所以我們不理會它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM