簡體   English   中英

Python IndexError:出了什么問題?

[英]Python IndexError: what's wrong?

我必須搜索包含日期的字符串,因此我必須找到匹配格式(date_text1、date_text2 和 date_text)的子字符串,並將它們轉換為傳統格式,例如 25/04/1955。

為什么索引不存在?

import re 

#date_text1 = '042555'
#date_text2 = '04/25/1955'
date_text = 'April 25, 1955'

date_patterns = (r'(\d{2}) (\d{2}) (\d{2})', r'(\d{2}) / (\d{2}) / (\d{4})', r'([\w\D]+) (\d{2}) , (\d{4})')

scan = True
idx = 0
while scan:
    match = re.fullmatch(date_patterns[idx], date_text)
    if match:
        month, day, year = match.groups()
        scan = False
    else:
        idx += 1

# Adjust for years
if int(year) <= 19:
    year = "20"+year
elif int(year) <= 99:
    year = "19"+year

# Adjust for months
months = {"January":"01", "February":"02", "March":"03", "April":"04", "May":"05", "June":"06","July":"07", "August":"08", "September":"09", "October":"10","November":"11", "December":"12"}
if len(month) > 2:
    month = months[month]

normalized_date = f'{day}/{month}/{year}'
print(normalized_date)

因為你的模式都不匹配,循環將不斷增加idx直到它超過元組的邊界。

不匹配的原因是你的最后一個正則表達式模式有一個小錯誤。 這個:

r'([\w\D]+) (\d{2}) , (\d{4})')

應該:

r'([\w\D]+) (\d{2}), (\d{4})')

解決這個問題后,我可以從程序中獲得正確的輸出:

 25/04/1955

暫無
暫無

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

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