J'ai 2 listes: sortie Je veux: p> 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 code> à l'intérieur du nom_id code> et cela fonctionne, mais je veux qu'une clause d'autre indique s'il ne trouve pas le "" code> rendre vide? p>
4 Réponses :
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
"""
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
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.
Une autre approche pour produire exactement votre sortie:
Travaillé comme un charme!
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 """
Vous pouvez tout faire ensemble dans une seule boucle. mais c'est une bonne solution pour quelqu'un de nouveau
Je pense que nous pouvons ignorer le premier module def. Et utilisez simplement les deux listes comme exemple ...