2012-12-23 37 views

Trả lời

18

bạn có thể sử dụng biểu thức thông thường:

regex = re.compile(r'\d+') 

Sau đó, để có được những chuỗi phù hợp:

regex.findall(filename) 

này sẽ trả về một danh sách các chuỗi có chứa các con số. Nếu bạn thực sự muốn số nguyên, bạn có thể sử dụng int:

[int(x) for x in regex.findall(filename)] 

Nếu chỉ có 1 số trong mỗi tên tập tin, bạn có thể sử dụng regex.search(filename).group(0) (nếu bạn chắc chắn rằng nó sẽ tạo ra một trận đấu). Nếu không tìm thấy kết quả phù hợp, dòng trên sẽ tạo ra một AttributeError nói rằng NoneType không thuộc tính group.

+0

Điều này thực hiện chính xác những gì tôi cần - cảm ơn rất nhiều. – Borealis

+0

@Aaron - Không sao cả. Tôi rất vui được giúp đỡ. – mgilson

3

Vì vậy, bạn chưa để lại bất kỳ mô tả nào về những tệp này và cách bạn nhận chúng, nhưng tôi cho rằng bạn sẽ nhận được tên tệp bằng mô-đun os.

Như để nhận được số ra trong những cái tên, bạn muốn được tốt nhất bằng cách sử dụng biểu thức thông thường với re, một cái gì đó như thế này:

import re 
def get_numbers_from_filename(filename): 
    return re.search(r'\d+', filename).group(0) 

Sau đó, để bao gồm rằng trong một vòng lặp for, bạn muốn chạy chức năng đó trên mỗi tên tệp:

for filename in os.listdir(myfiledirectory): 
    print get_numbers_from_filename(filename) 

hoặc điều gì đó dọc theo các dòng đó.

2

Nếu có chỉ là một trong số:

filter(lambda x: x.isdigit(), filename) 
Các vấn đề liên quan