如何从路径列表中提取数字值并将其存储在列表中以删除其他字符串

时间:2018-07-25 14:25:05

标签: python

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']

我无法继续。

5 个答案:

答案 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']

尝试使用Regular Expressions

例如:

lst2=[]
for entry in list:
  list2.append(re.search("\d+",entry).group(0)

也许它并不完美,但它可以工作。