Tôi đang cố định vị trí tất cả các vị trí chỉ mục của một chuỗi trong danh sách các từ và tôi muốn các giá trị được trả về dưới dạng danh sách. Tôi muốn tìm chuỗi nếu nó là của riêng nó, hoặc nếu nó được đặt trước hoặc theo sau bởi dấu câu, nhưng không phải nếu nó là một chuỗi con của một từ lớn hơn.Làm thế nào để bạn sử dụng một regex trong một danh sách hiểu trong Python?
Mã sau chỉ ghi lại "bò" và bỏ lỡ cả "kiểm tra; bò" và "bò".
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == myString]
print indices
>> 5
Tôi đã cố gắng thay đổi mã để sử dụng một biểu thức chính quy:
import re
myList = ['test;cow', 'one', 'two', 'three', 'cow.', 'cow', 'acow']
myString = 'cow'
indices = [i for i, x in enumerate(myList) if x == re.match('\W*myString\W*', myList)]
print indices
Nhưng điều này mang lại một lỗi: dự kiến chuỗi hoặc đệm
Nếu có ai biết những gì tôi đang làm sai tôi sẽ rất vui khi được nghe. Tôi có một cảm giác đó là một cái gì đó để làm với thực tế tôi đang cố gắng sử dụng một biểu thức chính quy trong đó khi nó mong đợi một chuỗi. Có giải pháp nào không?
Sản lượng tôi đang tìm kiếm nên đọc:
>> [0, 4, 5]
Cảm ơn
lẽ thêm 're.escape' quá? –
@MartijnPieters: chắc chắn, đã thêm. – georg
Điều này không khớp với phần tử đầu tiên mà OP muốn khớp. –