list= ['/xyz/abc/def/123621912.csv',
'/xyz/abc/def/1662828716.csv',
'/xyz/abc/def/1111111111.csv',
'/xyz/abc/def/7272718119.csv',
'/xyz/abc/def/92881991911.csv',
'/xyz/abc/def/66271819112.csv',
'/xyz/abc/def/2717178192.csv']
这是一个列表。我想提取一个只有整数的列表
list = ['123621912,1662828716,1111111111,7272718119,92881991911,66271819112,2717178192]
我尝试了以下代码:
files = [i.split('.csv', 1)[0] for i in files]
我知道了
list= ['/xyz/abc/def/123621912',
'/xyz/abc/def/1662828716',
'/xyz/abc/def/1111111111',
'/xyz/abc/def/7272718119',
'/xyz/abc/def/92881991911',
'/xyz/abc/def/6627181911',
'/xyz/abc/def/2717178192']
我无法继续。
答案 0 :(得分:0)
您的代码很接近,尽管我可能会用斜线而不是.csv进行拆分,选择split()返回的列表的最后一个元素,然后从中删除.csv。
int_list = [path.split('/')[-1].replace('.csv', '') for path in list]
答案 1 :(得分:0)
使用正则表达式(注意,不要使用list
作为变量名,它会掩盖内置函数):
lst= ['/xyz/abc/def/123621912.csv',
'/xyz/abc/def/1662828716.csv',
'/xyz/abc/def/1111111111.csv',
'/xyz/abc/def/7272718119.csv',
'/xyz/abc/def/92881991911.csv',
'/xyz/abc/def/66271819112.csv',
'/xyz/abc/def/2717178192.csv']
import re
from pprint import pprint
pprint([re.findall(r'(\d+)\.', l)[0] for l in lst])
打印:
['123621912',
'1662828716',
'1111111111',
'7272718119',
'92881991911',
'66271819112',
'2717178192']
答案 2 :(得分:0)
numList = []
for i in range(len(listA)):
x = listA[i].split('def/', 1)
x = x[1].split('.', 1)
numList.append(x[0])
输出:
['123621912',
'1662828716',
'1111111111',
'7272718119',
'92881991911',
'66271819112',
'2717178192']
答案 3 :(得分:0)
>>> import re
>>> re.findall(r'\d+', '\n'.join(lst))
['123621912', '1662828716', '1111111111', '7272718119', '92881991911', '66271819112', '2717178192']
顺便说一句,避免将您的名字命名为list
,因为它与内置文件不符
答案 4 :(得分:0)
我想你想实现
lst= ['123621912','1662828716','1111111111','7272718119','92881991911','66271819112','2717178192']
例如:
lst2=[]
for entry in list:
list2.append(re.search("\d+",entry).group(0)
也许它并不完美,但它可以工作。