Example string:
ex_name_age = "Hannah 12, Daniel 98, Maya 30, Elizabeth 96"
Wanted format output:
[['Hannah', 12],
['Daniel', 98],
['Maya', 30],
['Elizabeth', 96]]
I tried using:
name_age_a = ex_name_age.split(", ")
name_age_a = [[val] for val in name_age_a]
print(name_age_a)
Which resulted in:
[['Hannah 12'],
['Daniel 98'],
['Maya 30'],
['Elizabeth 96']]
So I went quite wrong...
Does anyone know how to solve this, so each list will contain both [["string", integer],...]
?
CodePudding user response:
One option using a list comprehension:
[[name, int(age)]
for x in ex_name_age.split(', ')
for name, age in [x.split()]
]
Output:
[['Hannah', 12],
['Daniel', 98],
['Maya', 30],
['Elizabeth', 96]]
CodePudding user response:
Actually you did correctly but second split is missing. You can try like this.
name_age_a = ex_name_age.split(", ")
name_age_a = [[val.split(' ')] for val in name_age_a]
print(name_age_a)
CodePudding user response:
Each val
in name_age_a
is a string like 'Hannah 12'
. You need to split each of those strings on the empty space ' '
.
ex_name_age = "Hannah 12, Daniel 98, Maya 30, Elizabeth 96"
name_age_a = ex_name_age.split(", ")
print(name_age_a)
# ['Hannah 12', 'Daniel 98', 'Maya 30', 'Elizabeth 96']
out = []
for val in name_age_a:
name, age = val.split(' ') # unpack
out.append([name, int(age)])
print(out)
# [['Hannah', 12], ['Daniel', 98], ['Maya', 30], ['Elizabeth', 96]]