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

时间:2019-07-09 20:59:19

标签: regex python-3.x tuples findall

我正在阅读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,它工作正常,除了它返回包含所有字符串的元组。我想将整数值存储为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'),即整数值是整数而不是字符串

1 个答案:

答案 0 :(得分:1)

调用元组中应为整数的元素上的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))