Reputation: 167
Need help, let's assume that I have a string 'Sam-Person' in a variable called 'input'
name, kind = input.split('-')
By doing the above, I get two variable with different strings 'Sam' and 'Person'
is there a way to only get the first value name = 'Sam' without the need of the extra variable 'kind' and without having to work with lists?
When doing this, assuming that I was going to get only 'Sam':
name = input.split('-')
I get a list, and then I can access the values by index name[0] or name[1], but it is not what I want, I just want to directly get 'Sam' into the variable 'name', is there a way to do that or an alternative to split?
Upvotes: 11
Views: 58593
Reputation: 104722
If you don't need the second part of the split
, you could instead try searching the string for the index of the first -
character and then slicing to that index:
string[:string.index('-')]
This is a little bit faster than splitting and discarding the second part because it doesn't need to create a second string instance that you don't need.
Be aware that this code will raise an exception if there's no -
in the string, as did your original code. A solution using split
like falsetru's will return the full string instead (which may or may not be better).
Upvotes: 4
Reputation: 369134
Assign the first item directly to the variable.
>>> string = 'Sam-Person'
>>> name = string.split('-')[0]
>>> name
'Sam'
You can specify maxsplit
argument, because you want to get only the first item.
>>> name = string.split('-', 1)[0]
Upvotes: 22