Vous pouvez utiliser re.split
pour découper la chaîne à l'aide d'expressions régulières :
import re
s = '\"Distance 1: Distance XY\" 1 2 4 5 9 \"Distance 2: Distance XY\" 3 6 8 10 5 \"Distance 3: Distance XY\" 88 45 36 12 4'
re.split(r'(?<=\d)\s+(?=\")', s)
# ['"Distance 1: Distance XY" 1 2 4 5 9',
# '"Distance 2: Distance XY" 3 6 8 10 5',
# '"Distance 3: Distance XY" 88 45 36 12 4']
(?<=\d)\s+(?=\")
contraint le délimiteur à être l'espace entre un chiffre et un guillemet.
S'il s'agit d'une citation intelligente dans le fichier texte, remplacer \"
avec une citation intelligente, option + [ sur mac, vérifier ici pour Windows :
with open("test.txt", 'r') as f:
for line in f:
print(re.split(r'(?<=\d)\s+(?=“)', line.rstrip("\n")))
# ['“Distance 1: Distance XY” 1 2 4 5 9', '“Distance 2: Distance XY” 3 6 8 10 5', '“Distance 3: Distance XY” 88 45 36 12 4']
Ou utiliser l'unicode pour les guillemets intelligents de gauche \u201C
:
with open("test.csv", 'r') as f:
for line in f:
print(re.split(r'(?<=\d)\s+(?=\u201C)', line.rstrip("\n")))
# ['“Distance 1: Distance XY” 1 2 4 5 9', '“Distance 2: Distance XY” 3 6 8 10 5', '“Distance 3: Distance XY” 88 45 36 12 4']