Tôi đang cố gắng thay thế văn bản trong một tệp văn bản bằng cách đọc từng dòng, kiểm tra, sau đó viết nếu cần phải cập nhật. Tôi KHÔNG muốn lưu dưới dạng tệp mới, vì tập lệnh của tôi đã sao lưu các tệp trước và hoạt động trên các bản sao lưu.cách thay thế (cập nhật) văn bản trong một dòng tệp theo dòng
Dưới đây là những gì tôi có cho đến nay ... tôi nhận được fpath từ os.walk() và tôi đảm bảo rằng var pathmatch trả về đúng:
fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
for line in f.readlines():
if '<a href="' in line:
for test in filelist:
pathmatch = file_match(line, test)
if pathmatch is not None:
repstring = filelist[test] + pathmatch
print 'old line:', line
line = line.replace(test, repstring)
print 'new line:', line
f.write(line)
Nhưng những gì kết thúc xảy ra là tôi chỉ nhận được một vài dòng (cập nhật chính xác, nhớ bạn, nhưng lặp đi lặp lại từ trước đó trong tập tin) sửa chữa. Tôi nghĩ rằng đây là một vấn đề scoping, afaict.
* Ngoài ra: Tôi muốn biết cách chỉ thay thế văn bản khi trường hợp đầu tiên của kết quả phù hợp, ví dụ: tôi không muốn khớp với văn bản hiển thị, chỉ là href cơ bản.
có bạn xem là chỉ đơn giản là sử dụng 'sed' để thay thế? – Amber
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –
@Amber: Theo cách khác. Tôi thực sự muốn kết thúc chuyện này và học sed sau. Tôi gần như đã hoàn thành việc này ... :) – jml