Kayla Hiltermann wrote: > i am trying to make a pythagorean triples checker (a^2 + b^2 = c^2). the > user enters three sides to a triangle and my code determines if it is a > pythagorean triple (aka right triangle) or not. i have the entire code > pretty much done, except i want to account for variability in user input, > like using commas or just spaces. the user input is initially a string, > but is converted to a list once run through .split() . I would like to > split the user input by commas or spaces, so: 3 4 5 3,4,5 3, 4, 5 all > become: [“3", “4", “5"]. yes, the inputs are strings but i convert - or > make sure - they are integers later in the program.
Here's the trick: convert the commas to space, then use the string method to split: >>> def my_split(s): ... return s.replace(",", " ").split() ... >>> my_split("1 2 3") ['1', '2', '3'] >>> my_split("1,2,3") ['1', '2', '3'] >>> my_split("1, 2, 3") ['1', '2', '3'] >>> my_split("1, 2, 3,,,") ['1', '2', '3'] When you know it it's easy :) > my main issue is that > i cannot split by commas or spaces at the same time. i tried using the > vertical bar - .split(“ |,”) but it only executed the split by space, not > the split by comma. The str.split() method does not understand regular expressions. You need re.split() for this: >>> import re >>> re.split(" |,", "1 2 3") ['1', '2', '3'] >>> re.split(" |,", "1,2,3") ['1', '2', '3'] >>> re.split(" |,", "1, 2, 3") ['1', '', '2', '', '3'] To accept a combination of one comma and whitespace: >>> re.split(r"\s*[,\s]\s*", "1, 2 , 3") ['1', '2', '3'] Or just look for digits: >>> re.findall(r"\d+", "1, 2 , 3") ['1', '2', '3'] But I recommend that you stick with the str.split() approach shown first. > as of now, i can only split by either. the issue is > that when i split by spaces - .split(“ ) , “3,4,5” does not split and > becomes the list [“3,4,5”]. on the other hand, “3, 4, 5” does split, but > becomes [“3,”, “4,”, “5”]. the problem is the same if i replace the > .split(“ “) by split(“,”), only the commas are replaced by spaces. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor