Python|从字符串列表中提取数字
有时,我们可以以多种形式获取数据,并且我们希望对整体的某些特定部分执行转换和提取。一个这样的问题可能是从字符串中提取一个数字并对其进行扩展,有时它可能不仅仅是一个元素字符串,而是一个列表。让我们讨论一些可以解决这个问题的方法。
方法 #1:使用列表理解 + split()
这个特殊问题可以使用列表推导函数来解决,将逻辑扩展到所有项目,拆分函数执行拆分任务并获取目标所需元素。
# Python3 code to demonstrate
# Extracting numbers from list of strings
# using list comprehension + split()
# initializing list
test_list = ['Rs. 24', 'Rs. 18', 'Rs. 8', 'Rs. 21']
# printing original list
print("The original list : " + str(test_list))
# using list comprehension + split()
# Extracting numbers from list of strings
res = [int(sub.split('.')[1]) for sub in test_list]
# print result
print("The list after Extracting numbers : " + str(res))
输出 :
The original list : ['Rs. 24', 'Rs. 18', 'Rs. 8', 'Rs. 21']
The list after Extracting numbers : [24, 18, 8, 21]
方法 #2:使用join() + isnumeric()
+ list comprehension + map()
在未预先定义数字将以特定方式排序的情况下,此方法是优选的,即,此方法提供了从可能的任何位置获取数字的灵活性。
# Python3 code to demonstrate
# Extracting numbers from list of strings
# using join() + isnumeric() + list comprehension + map()
# initializing list
test_list = ['Rs. 24', 'Rs. 18', 'Rs. 8', 'Rs. 21']
# printing original list
print("The original list : " + str(test_list))
# using join() + isnumeric() + list comprehension + map()
# Extracting numbers from list of strings
res = list(map(lambda sub:int(''.join(
[ele for ele in sub if ele.isnumeric()])), test_list))
# print result
print("The list after Extracting numbers : " + str(res))
输出 :
The original list : ['Rs. 24', 'Rs. 18', 'Rs. 8', 'Rs. 21']
The list after Extracting numbers : [24, 18, 8, 21]