我目前正在处理来自 WhatsApp 的一些聊天消息,我需要以允许我将它们用于其他应用程序的方式拆分它们。这些消息是纯文本并遵循特定的模式。
一切都很顺利,除了用户添加新行时,例如当他们发送更详细的消息时。这会导致消息中出现新行。
因此,我需要一个可以连接这些与我想要的模式不匹配的线的模式。
目前,我正在迭代这些行,并在每行的开头使用 REGEX 模式来确定它是否有效。
但是,我遇到的问题是我无法正确加入他们。
所需的输出将位于第 5 行,并与下一行相连,直到匹配下一个模式。
[31/08/2020, 15:07:29] Paulo Bombinhas: Temos sim. Precisamos ver com o condomínio boulevard como vai ficar para reservar. Semana passada quando falei com eles dissseram que até então a capacidade de ocupação dos aptos está em 50% ou seja apenas 3 pessoas por apartamento
[31/08/2020, 15:08:41] Maria: Deste jeito não alugara né
[31/08/2020, 15:12:21] Paulo Bombinhas: Com essa taxa de ocupação fica bem difícil alugar. Mas acredito que para o verão já esteja normalizado
[10/09/2020, 11:04:25] Maria: Eu te passo
[11/09/2020, 10:45:21] Maria: administradora de Bens Ltda
36572992/0001-79
Caixa 104
Agência 4111
C/ C 245551-7 operação 005511
[15/09/2020, 06:36:31] Paulo Bombinhas: Bom dia Maria. Hoje vou passar o dia com a Livia para terminar o relatório e caso haja pendências já acertarmos também. Preciso entrar em contato por telefone também, me avise o melhor horário por favor.
[15/09/2020, 08:07:58] Maria: Bom dia Paulo. Que ótimo!
这是我正在使用的代码:
import re
def process_chat_files(filename):
with open(filename, 'r') as file:
lines = file.readlines()
processed_lines = []
pattern = r'^\[\d{2}\/'
if not re.match(pattern, cleaned_line):
joiner = line[-1] + line
processed_lines.append(joiner)
else:
processed_lines.append(line)
with open('./whats/_chat_to_join_fixed.txt', 'w') as file:
for line in processed_lines:
file.write(line)
这是一些可以工作的代码:
import re
import os
# Regular expression pattern
pattern = r'^\[\d\d/\d\d/\d{4}, \d\d:\d\d:\d\d\].*'
# Input and output file paths
input_file = 'input.txt'
output_file = 'output.txt'
match_count = 0
output_string = ""
if os.path.exists(output_file):
os.remove(output_file)
with open('input.txt', 'a') as file:
file.write('[00/00/0000, 00:00:00]\n') # add last line needed to process the next to last line
with open(input_file, 'r') as file:
for line in file:
line = line.rstrip("\n")
if match_count > 0 and re.search(pattern, line):
match_count = 0
# match with match_count > 0, output line and set match_count to 0
with open(output_file, 'a') as output:
if output_string != "[00/00/0000, 00:00:00]":
output.write(output_string + "\n")
output_string = line
# Check if line matches the pattern and the match_count is 0
if match_count == 0 and re.search(pattern, line):
match_count += 1
# match found, save line to output string
output_string = line
if match_count > 0 and not re.search(pattern, line):
# append line to output string
output_string = output_string + " || " + line