ExempleComment capturer un élément dans des colonnes avec des espaces autour?
300 january 10 20
300 februari 120,30 10
300 march 20,30 10
300,10 april 20,30 10
300 may 420,10 10,46
Je veux réorganiser les colonnes.
La première chose que je fais est de séparer les colonnes entre le texte en utilisant un séparateur. p.e.
(?<=\S)(\s{2,})(?=\S)
ou
(?<=\S)(\s{1,})(?=\S)
Ensuite, je veux mettre les colonnes dans une liste comme ceci:
|300 | |january | | 10 | |20 |
|300 | |februari| |120,30| |10 |
|300 | |march | |20,30 | |10 |
|300,10| | april | | 20,30| |10 |
|300 | |may | |420,10| |10,46|
résultat attendu:
mylist = [['300 ','january ',' 10 ','20 ']
['300 ','februari','120,30','10 '],
['300 ','march ','20,30 ','10 '],
['300,10',' april ',' 20,30','10 '],
['300 ','may ','420,10','10,46']]
Je ne sais pas comment capturer la les espaces.
J'ai essayé de capturer les espaces après utilisation du séparateur:
#find the max length of an element in a column
lengte_temp = [[len(x) for x in row] for row in mylist]
maxlengthcolumn = max(l[len(mylist[0])-1] for l in length_temp)
#add spaces to elements
for b in range(0,len(mylist)):
if length_temp[b][len(mylist[-1])-1] < maxlengthcolumn:
mylist[b][len(mylist[-1])-1] = mylist[b][len(mylist[-1])-1] + ' '*(maxlengthcolumn-length_temp[b][len(mylist[-1])-1])
mais cela supprime les espaces avant que les éléments d'une colonne.
Comment puis-je capturer les éléments d'une liste comme dans mon exemple ci-dessus?
Le module 'csv'? –
@Chris_Rands, Il me semble que le module csv ne respecte pas les espaces comme dans mon exemple. (Il supprime les espaces et joint la chaîne après avoir mis un nombre d'espace fixe entre les éléments) – Reman
Vous ne pouvez pas utiliser la méthode str.split()? Si je ne me trompe pas, cela préserve les espaces. – Zafi