2013-02-24 25 views
6
commentary = soup.find('div', {'id' : 'live-text-commentary-wrapper'}) 
findtoure = commentary.find(text = re.compile('Gnegneri Toure Yaya')).replace('Gnegneri  Toure Yaya', 'Yaya Toure') 

Chú thích chứa nhiều phiên bản khác nhau của Gnegneri Toure Yaya cần thay đổi thành Yaya Toure.Python - Tìm văn bản sử dụng beautifulSoup rồi thay thế trong biến súp gốc

findAll() không hoạt động như findtoure là danh sách.

Vấn đề khác mà tôi có là mã này chỉ đơn giản là tìm chúng và thay thế chúng thành một biến mới gọi là findtoure, tôi cần phải thay thế chúng trong súp ban đầu.

Tôi nghĩ rằng tôi chỉ xem xét điều này từ góc độ sai.

+0

@MartijnPieters Tôi hy vọng bạn đã có một Soup đẹp cho bữa tối;), nhưng tôi không thể đổ lỗi cho bạn nếu bạn không nhớ. – PascalVKooten

Trả lời

12

Bạn không thể làm những gì bạn muốn với chỉ.replace(). Từ số BeautifulSoup documentation on NavigableString:

Bạn không thể chỉnh sửa chuỗi tại chỗ, nhưng bạn có thể thay thế một chuỗi bằng một chuỗi khác bằng cách sử dụng replace_with().

Đó chính xác là những gì bạn cần làm; lấy mỗi trận đấu, sau đó gọi .replace() vào văn bản chứa và thay thế ban đầu với điều đó:

findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya')) 
for comment in findtoure: 
    fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure') 
    comment.replace_with(fixed_text) 

Nếu bạn muốn sử dụng những ý kiến ​​hơn nữa, bạn sẽ cần phải làm một phát hiện mới:

findtoure = commentary.find(text = re.compile('Yaya Toure')) 

hoặc, nếu bạn tất cả các bạn cần là kết quả unicode text (do not connected NavigableString đối tượng), chỉ cần thu thập các fixed_text đối tượng:

findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya')) 
fixed_comments = [] 
for comment in findtoure: 
    fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure') 
    comment.replace_with(fixed_text) 
    fixed_comments.append(fixed_text) 
+0

cảm ơn người đàn ông dường như đã thực hiện thủ thuật – user2073606

Các vấn đề liên quan