[英]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.