Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串列表中提取8位数字_Python_List_Text Extraction - Fatal编程技术网

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请将预期输出添加到问题中。