将 findall 返回的字符串元组中的值转换为 int

Convert values in string tuple returned by findall to int

我正在阅读 unix 目录列表并想使用正则表达式提取文件大小、月份、日期、小时、分钟和文件名。

-rwxr-xr-x 1 jttoivon hyad-all    2356 Dec 11 11:50 add_colab_link.py
-rw-r--r-- 1 jttoivon hyad-all  164519 Dec 28 17:59 basics.ipynb

我正在使用 findall,它工作正常,除了它 returns 包含所有字符串的元组。我想将整数值转换为元组中的 int 存储。我该怎么做?

def file_listing(filename="listing.txt"):

    list1=[]
    regex=re.compile("(\d+)\s(\w{3})\s+(\d{1,})\s(\d{2}):(\d{2})\s(\w*[.]?\w*)")

    with open(filename, "r") as f:
        for line in f:    # iterates through all the lines in the file
         list1.extend(regex.findall(line))

代码生成('2356', 'Dec', '11', '11', '50', 'add_colab_link.py') 但我需要的是 (2356, 'Dec', 11, 11, 50, 'add_colab_link.py') 即整数值作为整数而不是字符串

对元组中应为整数的元素调用 int()

with open(filename, "r") as f:
    for line in f:
        size, month, day, hour, minute, name = regex.search(line).groups()
        list1.append((int(size), month, int(day), int(hour), int(minute), name))