8
test1 = 'name1'
test2 = 'name2'
..
test3 = 'name45'
test4 = 'name1231231'

Let's say I have bunch of strings which start with 'name' and are followed by a number of any length.

How can I parse out the number in the string?

Is regex the only way or is there a built-in module that can accomplish this task?

10
  • 6
    I did not downvote but perhaps your post was downvoted because of one of these reasons Commented Mar 14, 2016 at 16:57
  • Loop over all of them, replace name and cast int() or float() on them. Commented Mar 14, 2016 at 16:57
  • int_testi=int(testi[4:len(testi)]) would do. Commented Mar 14, 2016 at 16:59
  • 1
    its pretty clear, and there is research via regex, how is it not useful? this can be helpful to others Commented Mar 14, 2016 at 17:00
  • 2
    If you have the strings like this test=['name1','name2','name123125'] you can get just the integers like this: ints = [int(n[4:]) for n in test] Commented Mar 14, 2016 at 17:02

2 Answers 2

36

In Python 3, you could do the following:

import string

for test in ['name1', 'name2', 'name45', 'name1231231', '123test']:
    print(int(test.strip(string.ascii_letters)))

Giving you:

1
2
45
1231231
123

string.ascii_letters gives you a string containing all upper and lowercase letters. Python's strip() function takes a string specifying the set of characters to be removed, which in this case is all alpha characters, thus leaving just the numbers behind.

Note: This would not be suitable for a string such as 123name456.


If there are just known common prefixes/suffixes to all strings, the following approach could also be used in Python 3.9:

for test in ['name1', 'name2', 'name45', 'name1231231', '123test']:
    print(test.removeprefix('name').removesuffix('test'))
Sign up to request clarification or add additional context in comments.

Comments

5

If you know that the prefix is name, then you can either remove just that string, or you can skip the first four letters, like so:

s = 'name123'
print int(s.replace('name',''))

s = 'name123'
print int(s[4:])

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.