Get the summation of numbers in a string list using Python

In Python, we can sum the numbers present in a string list using various methods like Regular Expressions, isdigit() with List Comprehension, and filtering techniques. When working with lists containing strings, you often need to extract and sum numerical values from those strings. This is particularly useful when processing data from text files, log files, or web scraping.

Algorithm

A general algorithm to find the sum of numbers in a string list using Python is as follows:

  • Define a function that takes a string list as input
  • Join all elements of the string list into a single string
  • Apply a pattern or method to extract numerical values from the string
  • Convert the extracted values into integers
  • Sum the list of integers
  • Return the summation as the result

Method 1: Using Regular Expressions

Regular expressions provide an efficient way to match patterns in strings. By defining a pattern and using the re.findall() function, we can extract all numerical values from a string list ?

Syntax

numbers = [int(num) for num in re.findall(pattern, ''.join(string_list))]

Here, a list comprehension [int(num) for num in re.findall(pattern, ''.join(string_list))] is used to convert the matched strings to integers.

Example

The regular expression pattern r"\d+" matches one or more consecutive digits in each element of the list ?

import re

def sum_numbers(string_list):
    pattern = r"\d+"
    numbers = [int(num) for num in re.findall(pattern, ''.join(string_list))]
    return sum(numbers)

string_list = ['abc123', 'def456', 'ghi789']
result = sum_numbers(string_list)
print(f"Sum of numbers: {result}")
Sum of numbers: 1368

Method 2: Using isdigit() and List Comprehension

This method uses the isdigit() method to check if each character is a digit, combined with list comprehension. It extracts individual digits and sums them ?

Syntax

numbers = [int(char) for item in string_list for char in item if char.isdigit()]

Here, a list comprehension iterates over each character in each element of string_list and uses isdigit() to filter digits.

Example

This approach sums individual digits rather than complete numbers ?

def sum_numbers(string_list):
    numbers = [int(char) for item in string_list for char in item if char.isdigit()]
    return sum(numbers)

string_list = ['abc123', 'def456', 'ghi789']
result = sum_numbers(string_list)
print(f"Sum of individual digits: {result}")
Sum of individual digits: 45

Method 3: Using Filter and Join

This method uses the filter() function with str.isdigit to extract only digits from each item, then joins and converts them to integers ?

Syntax

numbers = [int(''.join(filter(str.isdigit, item))) for item in string_list]

Here, filter(str.isdigit, item) extracts digits from each item, and ''.join() combines them into a single number.

Example

This approach extracts complete numbers from each string element ?

def sum_numbers(string_list):
    numbers = [int(''.join(filter(str.isdigit, item))) for item in string_list]
    return sum(numbers)

string_list = ['abc123', 'def456', 'ghi789']
result = sum_numbers(string_list)
print(f"Sum of complete numbers: {result}")
Sum of complete numbers: 1368

Comparison

Method Extracts Result for ['abc123', 'def456'] Best For
Regular Expressions Complete numbers 579 (123 + 456) Complex patterns
isdigit() + List Comprehension Individual digits 21 (1+2+3+4+5+6) Digit-by-digit processing
Filter and Join Complete numbers 579 (123 + 456) Clean, readable code

Conclusion

Use Regular Expressions for complex number patterns, isdigit() for individual digit processing, and filter() with join() for clean extraction of complete numbers. Choose the method based on whether you need individual digits or complete numbers from your string list.

Updated on: 2026-03-27T08:12:24+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements