Traceback (most recent call last): File "C:\Users\test\PycharmProjects\pythonProject\1234.py", line 59, in <module> print("时间:", time[i]) ~~~~^^^ IndexError: list index out of range
时间: 2024-04-16 14:24:30 浏览: 141
这个错误通常表示索引超出了列表的范围,也就是尝试访问一个不存在的索引位置。在这种情况下,可能是因为正则表达式没有匹配到任何数据导致 `time` 列表为空。
为了解决这个问题,您可以在访问 `time` 列表的元素之前,添加一个条件判断来确保列表不为空。以下是修改后的代码示例:
```python
import os
import re
from bs4 import BeautifulSoup
# 指定文件夹路径
folder_path = "C:/Users/test/Desktop/DIDItest"
# 正则表达式模式
pattern = r'\[talkid:(\d+)\]'
time_pattern = r'\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]'
# 遍历文件夹中的所有文件
for root, dirs, files in os.walk(folder_path):
for file in files:
# 读取html文件
file_path = os.path.join(root, file)
with open(file_path, "r", encoding="utf-8") as f:
html_code = f.read()
# 解析html代码
soup = BeautifulSoup(html_code, "html.parser")
# 查找包含talkid的数据
talkid_data = soup.find_all(text=re.compile(pattern))
# 提取时间并转换格式
time_data = re.findall(time_pattern, html_code)
time = [.split()[0] for t in time_data] # 转化为 '0000-00-00' 格式
# 打印提取的数据
for i in range(len(talkid_data)):
if i < len(time):
print("时间:", time[i])
print("talkid_data:", talkid_data[i])
print()
```
这里添加了一个条件判断 `if i < len(time)`,以确保在访问 `time` 列表时不会超出索引范围。如果 `i` 的值大于等于 `time` 列表的长度,则不打印时间。
请再次运行代码,看看问题是否得到解决。如果问题仍然存在,请检查您的数据和正则表达式模式是否正确。
阅读全文