2

The following code will get a list as input, and it will use the split method to split the input list with a space.

student_heights = input("Input a list of student heights ").split()
for n in range(0, len(student_heights)):
  student_heights[n] = int(student_heights[n])

If I wanted to split with comma, I will just ad a comma on the split() method above and that would be split(", ")

My question is, what if I want it separated both with a space and with , at the same time depending on the user so the user can input the list comma separated or non comma separated. I tried and/or but no luck so far.

1

2 Answers 2

1

If you expect only integers, you might want to split using a regex for non digits:

import re
student_heights = list(map(int, re.split(r'\D+',  input("Input a list of student heights ").strip())))
print(student_heights)

NB. to limit the split to space and comma, use r'[, ]' in re.split, or r'[, ]+' for one or more of those characters, but be aware that any incorrect input will trigger an error during the conversion to int.

example:

Input a list of student heights 1 23,  456
[1, 23, 456]

Alternative with re.findall:

student_heights = list(map(int, re.findall(r'\d+', input("Input a list of student heights ")))

and for floats:

student_heights = list(map(float, re.findall(r'\d+(?:\.\d*)?', input("Input a list of student heights "))))

example:

Input a list of student heights 1, 2.3  456.

[1.0, 2.3, 456.0]
Sign up to request clarification or add additional context in comments.

Comments

0

you can use replace method as well:

student_heights = input("Input a list of student heights ").replace(',',' ').split()

student_heights
>>> out
'''
Input a list of student heights 12,15, 20 25
['12', '15', '20', '25']

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.