```
python
from datetime import datetime
# 假設(shè)這是我們的輸入文本,每行以時間戳開頭,并且時間戳已經(jīng)按非降序排列
text = """
[2022-01-01 13:00:00] Some text for the first period.
More text for the first period.
[2022-01-01 14:00:00] Text for the second period.
Even more text for the second period.
[2022-01-01 15:00:00] Text for the third period.
"""
# 給定的10個時間點团秽,這里只是示例,需要替換為實際的時間點
time_points = [
? ? datetime.strptime('2022-01-01 13:30:00', '%Y-%m-%d %H:%M:%S'),
? ? datetime.strptime('2022-01-01 14:30:00', '%Y-%m-%d %H:%M:%S'),
? ? # ... 添加更多的時間點叭首,直到10個
]
# 將輸入文本按行分割
lines = text.strip().split('\n')
# 初始化變量
current_period_text = []
periods = {tp: [] for tp in time_points}? # 創(chuàng)建一個字典來保存不同時間段的內(nèi)容
next_time_point_index = 0? # 下一個時間點的索引
# 遍歷每一行
for line in lines:
? ? # 檢查行首是否包含時間戳
? ? if line.startswith('['):
? ? ? ? # 解析新的時間戳
? ? ? ? timestamp_str = line.split(']')[0][1:]
? ? ? ? current_timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S')
? ? ? ?
? ? ? ? # 找到當(dāng)前時間戳所屬的時間段
? ? ? ? while next_time_point_index < len(time_points) and current_timestamp >= time_points[next_time_point_index]:
? ? ? ? ? ? next_time_point_index += 1
? ? ? ?
? ? ? ? # 將當(dāng)前行添加到正確的時間段
? ? ? ? periods[time_points[next_time_point_index - 1]].append(line)
? ? else:
? ? ? ? # 如果行首不是時間戳习勤,則將其添加到當(dāng)前時間段
? ? ? ? periods[time_points[next_time_point_index - 1]].append(line)
# 打印或處理分割后的文本
for tp, period_text in periods.items():
? ? print(f"Period up to {tp}:")
? ? print('\n'.join(period_text))
? ? print()? # 打印空行以分隔不同的時間段
# 運行代碼
# 輸出將會是按時間段分隔的文本
```
在這個腳本中,我們使用了一個變量`next_time_point_index`來跟蹤下一個時間點的索引焙格。對于每一行图毕,我們解析時間戳,并根據(jù)時間戳和`next_time_point_index`來確定當(dāng)前行應(yīng)該屬于哪個時間段眷唉。如果當(dāng)前行的時間戳大于或等于下一個時間點予颤,我們就增加`next_time_point_index`。這樣冬阳,我們就可以確保每行都被分配到正確的時間段蛤虐。
請注意,這個腳本假設(shè)時間戳是按非降序排列的肝陪,并且每個時間點都是唯一的驳庭。如果你的時間點有重復(fù)或者時間戳沒有排序,你需要先對時間點進(jìn)行排序氯窍,并確保時間戳也是按順序排列的饲常。