- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下正则表达式:
pattern = '^[a-zA-Z0-9-_]*_(?P[A-Z]\d\d)_T\d{4}(?PF\d{3})L\d{2}A\d{2}(?PZ\d{2})(?PC\d{2})\.tif$'
匹配如下文件名:
filename = '151006_655866_Z01_T0001F015L01A02Z01C03.tif'
与团体:
m = re.match(pattern, filename)
print m.group("pos") # Z01
print m.group("fID") # F015
print m.group("zID") # Z01
如何在 Python 中仅用给定的字符串替换指定的组?
我尝试将 re.sub
与函数调用一起使用,但不知道该函数应该是什么样子:
def replace_function(matchobj):
# how to replace only a given match group?
# (the following replaces *all* occurrences of "Z01" in this example)
return matchobj.group(0).replace(matchobj.group("slice"), "---")
print re.sub(pattern, replace_function, filename)
我想要的结果是:
151006_655866_Z01_T0001F015L01A02---C03.tif
câu trả lời hay nhất
您可以使用闭包和所选匹配组的开始/结束索引来执行您需要的操作:
nhập khẩu lại
from functools import partial
pattern = '^[\w-]*_(?P[A-Z]\d{2})_T\d{4}(?PF\d{3})L\d{2}A\d{2}(?PZ\d{2})(?PC\d{2})\.tif$'
filename = '151006_655866_Z01_T0001F015L01A02Z01C03.tif'
def replace_closure(subgroup, replacement, m):
if m.group(subgroup) not in [None, '']:
start = m.start(subgroup)
end = m.end(subgroup)
return m.group()[:start] + replacement + m.group()[end:]
subgroup_list = ['pos', 'fID', 'zID', 'cID']
replacement = '---'
for subgroup in subgroup_list:
print re.sub(pattern, partial(replace_closure, subgroup, replacement), filename)
đầu ra:
151006_655866_---_T0001F015L01A02Z01C03.tif
151006_655866_Z01_T0001---L01A02Z01C03.tif
151006_655866_Z01_T0001F015L01A02---C03.tif
151006_655866_Z01_T0001F015L01A02Z01---.tif
在线实现可用đây
关于python - 替换正则表达式匹配中的命名组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33634232/
Tôi có nút cộng/trừ và muốn người dùng không thể chọn nhiều hơn 20 nhưng không biết cách làm cho nó hoạt động. Tôi đã thử sử dụng các thuộc tính min="1"max="5 nhưng chúng không hoạt động. Đây là mã của tôi và một liên kết fiddle. https://jsf
Tôi đang cố gắng sao chép cốt truyện trên cùng dưới cùng như ví dụ ở đây nhưng nó không hiển thị chính xác (chuỗi màu tím có giá trị +ve và -ve, màu xanh lá cây có giá trị âm) để lại các đồ tạo tác lộn xộn. Tôi cũng đang nghiên cứu tạo một ví dụ đồ chơi để tái hiện vấn đề này, vì vậy tôi hy vọng rằng mặc dù thiếu dữ liệu nhưng vẫn có
Đã đóng cửa. Câu hỏi này không tuân thủ nguyên tắc Stack Overflow. Câu trả lời không được chấp nhận vào thời điểm này. Sự cố này dường như không liên quan đến việc lập trình trong phạm vi được xác định trong trung tâm trợ giúp. Đã đóng cửa 6 năm trước. Cộng đồng được đánh giá năm ngoái là
Câu hỏi này đã có câu trả lời ở đây: Thêm hai số nguyên dương cho câu trả lời âm. Tại sao? (4 câu trả lời) Đã đóng 5 năm trước. Tôi gặp phải một vấn đề lạ
Có ai biết cách chuyển đổi loại giá trị chuỗi -4,5 hoặc 5,4 thành gấp đôi -4,5 hoặc 5,4 không? Câu trả lời hay nhất chỉ cần sử dụng Double.parseDouble(Locale, String);
Tôi đang cố gắng chèn một cột khung dữ liệu mới chỉ chứa các chuỗi "dương" hoặc "âm" dựa trên phân loại TextBlob: Đối với hàng đầu tiên trong df của tôi, kết quả là (pos, 0,75, 0,24999999999999997) Tôi muốn 'Dương'
Tôi rất mới làm quen với VBA và không thể hiểu cách hoàn thành 2 nhiệm vụ trong một vòng lặp. Tôi thực sự đánh giá cao sự giúp đỡ của bạn. Tôi đã có thể thay đổi giá trị số ở cột 2 dựa trên dữ liệu ở cột 3, nhưng tôi không hiểu cách thay đổi phông chữ cho giá trị âm thành màu đỏ. Kích thước của bảng thay đổi hàng tháng
Xin chào, tôi đang sử dụng jquery để gửi biểu mẫu qua POST. Đây là cách tôi nhận được giá trị. var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // giá trị thập phân ngẫu nhiên với phần nguyên của nó nằm trong phạm vi Int32 và luôn luôn là p
Tôi có chuỗi này: var a='abc123#xyz123'; Tôi muốn xây dựng 2 hàm thay thế biểu thức chính quy: 1) Thay thế tất cả các ký tự có '#' trong tương lai bằng '*' (không bao gồm '#') nên như thế này
Tôi đang sử dụng DialogFragment. Tôi muốn các nút dương và âm vẫn ở phía trên bàn phím khi người dùng tương tác với văn bản chỉnh sửa trong hình ảnh ví dụ bên dưới từ màn hình của ứng dụng máy tính bảng Gmail. Nỗ lực của tôi không thành công, đây là Dia của tôi
Từ cuốn sách Nghệ thuật hội họp, tôi đã sao chép câu này: Trong hệ bù hai, bit HO của một số là bit dấu Nếu HO.
Có cách nào tốt hơn và hay hơn để triển khai mã đơn giản sau (diffYear, A và B là số): diffYear = YearA - YearB if (diffYear == 0) { A = B;
Tôi đang thiết kế một ngôn ngữ và cố gắng xác định xem true nên là 0x01 hay 0xFF. Rõ ràng tất cả các giá trị khác 0 sẽ được chuyển đổi thành true, nhưng tôi đang cố gắng xác định cách biểu diễn bên trong chính xác. Ưu điểm và nhược điểm của mỗi lựa chọn là gì? Câu trả lời hay nhất Không sao cả, miễn là
Trong OnCreateDialog của lớp phân mảnh hộp thoại của tôi, tôi đang thực hiện việc này: AlertDialog.Builder builder = new AlertDialog.Builder
Câu hỏi này đã có câu trả lời ở đây: Giải quyết tình trạng quá tải mơ hồ trên con trỏ hàm và std::function cho việc sử dụng lambda
Tôi tình cờ gặp một hành vi kỳ lạ của NSDecimalNumber: đối với một số giá trị nhất định, việc gọi số nguyênValue, longValue, longLongValue, v.v. trả về các giá trị không mong muốn. Ví dụ: tôi
Câu hỏi này đã có câu trả lời ở đây: Giải quyết tình trạng quá tải mơ hồ trên con trỏ hàm và std::function cho lambda bằng cách sử dụng
Tôi có biểu thức chính quy này để kiểm tra xem dữ liệu đầu vào của người dùng có hợp lệ hay không: value.length === 0 || value === '-' ||
Tôi muốn điều chỉnh mô hình hỗn hợp Gaussian cho tập dữ liệu chứa khoảng 120 nghìn mẫu, mỗi mẫu có khoảng 130 kích thước. Khi tôi thực hiện việc này bằng matlab, tôi chạy tập lệnh (số cụm là 1000): gm = fitgmdist(d
Tôi là một lập trình viên xuất sắc, rất giỏi!