Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 分析具有多个分隔符的字符串_Python_Python 2.7_Parsing - Fatal编程技术网

Python 分析具有多个分隔符的字符串

Python 分析具有多个分隔符的字符串,python,python-2.7,parsing,Python,Python 2.7,Parsing,我有一个文件列表: my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt', 'identification_1321_9.txt'] 我如何一次解析所有这些数据以获得每个数据中的第二个数字(第二个“u”之后,“.”之前的数字)?这将使您获得这些数字: import re def get_numbers(list): out = [] for l in list:

我有一个文件列表:

my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt', 'identification_1321_9.txt']

我如何一次解析所有这些数据以获得每个数据中的第二个数字(第二个“u”之后,“.”之前的数字)?

这将使您获得这些数字:

import re

def get_numbers(list):
    out = []
    for l in list:
        matched = re.match(r'\w+_\d+_(\d+)\.txt', l)
        if matched:
            out.append(matched.group(1))
    return(out)


my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt']
numbers = get_numbers(my_list)

这将为您提供数字:

import re

def get_numbers(list):
    out = []
    for l in list:
        matched = re.match(r'\w+_\d+_(\d+)\.txt', l)
        if matched:
            out.append(matched.group(1))
    return(out)


my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt']
numbers = get_numbers(my_list)

我会列出一份理解力的清单

>>> my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt', 'identification_1321_9.txt']
>>> [i[i.rfind('_') + 1:i.rfind('.')] for i in my_list]
['23', '133', '9']

当然,如果需要它们作为整数,您可以在理解中应用
int()

>>> my_list = ['identification_2442942_23.txt', 'identification_9353289532_133.txt', 'identification_1321_9.txt']
>>> [i[i.rfind('_') + 1:i.rfind('.')] for i in my_list]
['23', '133', '9']

当然,如果你需要它们作为整数,你可以在理解中应用
int()

这更像是一个python,更优雅,所以我会投票支持它。我提出了一个基本问题,让人更容易理解,但这得到了风格点。@ShawnMehan谢谢,我发现我根本无法理解足够的内容,它们既简洁又可读。我认为它们可能是Python语言中我最喜欢的东西。这更像Python语言,更优雅,所以我会投票支持它。我提出了一个基本问题,让人更容易理解,但这得到了风格点。@ShawnMehan谢谢,我发现我根本无法理解足够的内容,它们既简洁又可读。我想它们可能是我最喜欢的Python语言。