fixed some contitions

This commit is contained in:
2026-04-11 14:19:54 +08:00
parent 79985e7319
commit d1cd550c1e

View File

@@ -243,24 +243,54 @@ def read_docx_content(doc_path: Path) -> List[str]:
# 检查当前起始位置是否是 6 行一组模式 # 检查当前起始位置是否是 6 行一组模式
def is_six_row_group(lines: list, start_idx: int) -> bool: def is_six_row_group(lines: list, start_idx: int) -> bool:
"""检查从 start_idx 开始是否是 6 行一组""" """检查从 start_idx 开始是否是 6 行一组"""
if start_idx + 1 < len(lines): if start_idx + 5 < len(lines):
return is_url_line(lines[start_idx + 1]) and \ return is_url_line(lines[start_idx + 1]) and \
is_datetime_line(lines[start_idx + 2]) is_datetime_line(lines[start_idx + 2]) and \
is_url_line(lines[start_idx + 4]) and \
is_datetime_line(lines[start_idx + 5])
return False
# 检查当前起始位置是否是 5 行一组模式
def is_five_row_group(lines: list, start_idx: int) -> bool:
"""检查从 start_idx 开始是否是 5 行一组"""
if start_idx + 4 < len(lines):
return is_url_line(lines[start_idx + 1]) and \
is_datetime_line(lines[start_idx + 2]) and \
is_url_line(lines[start_idx + 4])
return False return False
# 按组处理,每组独立判断 offset # 按组处理,每组独立判断 offset
# 规则:如果第二行是网址且第三行是日期/时间,则当前 6一组;否则丢弃第一行,继续判断 # 规则:优先检查 6 行一组,如果是则合并 6 行;否则检查 5 行一组,如果是则合并 5 行并补充时间;否则丢弃第一行,继续判断
result = [] result = []
i = 0 i = 0
while i + 5 <= len(lines): while i + 4 <= len(lines):
# 检查当前位置开始是否是 6 行一组模式 if i + 5 < len(lines) and is_six_row_group(lines, i):
if is_six_row_group(lines, i):
# 是 6 行一组,合并这 6 行 # 是 6 行一组,合并这 6 行
combined = '\t'.join(lines[i:i+6]) combined = '\t'.join(lines[i:i+6])
# 检查并补充缺失的时间信息
parts = combined.split('\t')
if len(parts) >= 3 and not is_datetime_line(parts[2]):
parts[2] = '1970-1-1'
if len(parts) >= 6 and not is_datetime_line(parts[5]):
parts[5] = '1970-1-1'
combined = '\t'.join(parts)
result.append(combined) result.append(combined)
i += 6 i += 6
elif is_five_row_group(lines, i):
# 是 5 行一组,合并这 5 行并补充时间2
combined = '\t'.join(lines[i:i+5])
# 检查并补充缺失的时间信息
parts = combined.split('\t')
if len(parts) >= 3 and not is_datetime_line(parts[2]):
parts[2] = '1970-1-1'
# 为第二组补充时间
if len(parts) >= 5:
parts.append('1970-1-1')
combined = '\t'.join(parts)
result.append(combined)
i += 5
else: else:
# 不是 6 行一组,丢弃当前行(相当于 offset+1 # 不是有效组,丢弃当前行(相当于 offset+1
i += 1 i += 1
# 处理剩余行(不足 6 行的) # 处理剩余行(不足 6 行的)
while i < len(lines): while i < len(lines):