0
votes

Liste de manipulation python

J'ai 2 listes: xxx

sortie Je veux: xxx

Je pense avoir besoin de la manipulation de la liste mais pas certain de faire correspondre 1: 1 sur deux listes? J'ai essayé une clause si à l'intérieur du nom_id et cela fonctionne, mais je veux qu'une clause d'autre indique s'il ne trouve pas le "" rendre vide? xxx


1 commentaires

Je pense que nous pouvons ignorer le premier module def. Et utilisez simplement les deux listes comme exemple ...


4 Réponses :


0
votes
name_info = ['0.abc','450.xyz','7.garfunkl','Coma','Cancer']
XY_coorinfo = ['1234:5678', '2345:6543','3245:1234', '4587:2346', '6785:23987']

for i,j in zip(name_info,XY_coorinfo):

    io = (i[:i.index('.')],i[i.index('.')+1:]) if '.' in i else ('',i)
    print(*io,*j.split(':'),sep=',')


    """
    output

    0,abc,1234,5678
    450,xyz,2345,6543
    7,garfunkl,3245,1234
    ,Coma,4587,2346
    ,Cancer,6785,23987

    """

0 commentaires

3
votes

Utiliser zip () code> Pour itérer sur deux listes simultanément et Split code> et joindre code> au format requis:

name_info = ['0.abc','450.xyz','7.garfunkl','Coma','Cancer'] 
XY_coorinfo = ['1234:5678', '2345:6543','3245:1234', '4587:2346', '6785:23987']

for x, y in zip(name_info, XY_coorinfo):
    l, _ , r = x.partition('.')
    if not r:
        l = f',{l}'
        print(','.join([l] + y.split(':')))
    else:
        print(','.join([l, r] + y.split(':')))

# 0,abc,1234,5678
# 450,xyz,2345,6543
# 7,garfunkl,3245,1234
# ,Coma,4587,2346
# ,Cancer,6785,23987


3 commentaires

La sortie ne correspond pas


Cela a travaillé pour les rejoindre. Mais oui la sortie nécessite un caractère vide s'il ne trouve pas la scission. Cela devrait être une solution facile, je suppose .. Je vais creuser.


@Ram, désolé pour la confusion. Réponse mise à jour.



2
votes

Une autre approche pour produire exactement votre sortie: xxx


1 commentaires

Travaillé comme un charme!



1
votes

Un moyen simple de faire cela pourrait être:

""""
0,abc,1234,5678
450,xyz,2345,6543
7,garfunkl,3245,1234
Coma,4587,2346
Cancer,6785,23987
"""


1 commentaires

Vous pouvez tout faire ensemble dans une seule boucle. mais c'est une bonne solution pour quelqu'un de nouveau