Python 从字符串列表中提取8位数字
我有一个字符串列表,其中可能包含字母、符号、数字等,如下所示:Python 从字符串列表中提取8位数字,python,list,text-extraction,Python,List,Text Extraction,我有一个字符串列表,其中可能包含字母、符号、数字等,如下所示: list = ['\n', '', '0', '38059', '', '', '?_', '71229366', '', '1', '38059', '', '', '?_', '87640804', '', '2', '38059', '', '', '?_', '71758011', '', '', ':?', ';__', '71229366287640804271758011287169822'] 如何过滤掉除小于100
list = ['\n', '', '0', '38059', '', '', '?_', '71229366', '', '1', '38059', '', '', '?_', '87640804', '', '2', '38059', '', '', '?_', '71758011', '', '', ':?', ';__', '71229366287640804271758011287169822']
如何过滤掉除小于10000000和大于9999999的数字以外的所有其他字符串
预期产出:
list = ['71229366', '87640804', '71758011']
如果你不介意做一个新的列表,你可以尝试一些简单的列表,比如
filtered_list = [i for i in list if i.isdigit() and 10000000 < int(i) < 99999999]
如果你不介意做一个新的列表,你可以尝试一些简单的列表,比如
filtered_list = [i for i in list if i.isdigit() and 10000000 < int(i) < 99999999]
可以使用贴图和过滤器
如果不希望转换为整数,请删除映射:
可以使用贴图和过滤器
如果不希望转换为整数,请删除映射:
说明:
使用有效函数作为条件筛选列表中的所有值
data = ['\n', '', '0', '38059', '', '', '?_', '71229366', '', '1', '38059',
'', '', '?_', '87640804', '', '2', '38059', '', '', '?_', '71758011',
'', '', ':?', ';__', '71229366287640804271758011287169822']
res = []
for e in data:
try:
number = int(e)
except ValueError:
continue
if 10000000 < number < 99999999:
res.append(str(number))
说明:
使用有效函数作为条件筛选列表中的所有值
data = ['\n', '', '0', '38059', '', '', '?_', '71229366', '', '1', '38059',
'', '', '?_', '87640804', '', '2', '38059', '', '', '?_', '71758011',
'', '', ':?', ';__', '71229366287640804271758011287169822']
res = []
for e in data:
try:
number = int(e)
except ValueError:
continue
if 10000000 < number < 99999999:
res.append(str(number))
输出:
[71229366, 87640804, 71758011]
['71229366', '87640804', '71758011']
输出:
[71229366, 87640804, 71758011]
['71229366', '87640804', '71758011']
让我用正则表达式提供一个简单而有效的答案。不需要映射或复制原始列表,也不需要将所有内容转换为int;您基本上是在问如何在列表中保留所有8位整数:
>>> filter(re.compile('^\d{8}$').match, data)
['71229366', '87640804', '71758011']
我们需要一个精确匹配8位数字的正则表达式,然后通过提供对标准函数的部分应用来过滤列表。让我使用正则表达式提供一个简单而有效的答案。不需要映射或复制原始列表,也不需要将所有内容转换为int;您基本上是在问如何在列表中保留所有8位整数:
>>> filter(re.compile('^\d{8}$').match, data)
['71229366', '87640804', '71758011']
我们需要一个正好匹配8位数字的正则表达式,然后通过向标准函数提供部分应用来过滤列表。所有字符的含义是什么?以下是不带字符的输出[]Try list=none请将预期输出添加到问题中。所有字符的含义是什么?以下是没有字符的输出[]Try list=none请将预期输出添加到问题中。