Re: [問題] 批次讀取字串、加入文字

看板Python作者 (python fan)時間13年前 (2012/11/05 00:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
我的版本, 光使用函數沒辦法像用 re 一樣 code 那麼短, 可以參考看看 # -*- coding: utf-8 -*- from operator import add text = """ Apple 蘋果 123 HTC 宏達電 456 Samsung 三星 789 Sony 索尼 234 Asus 華碩 345 """ def close_tag(tag): return lambda s: "<%s>%s</%s>" % (tag, s, tag) td = close_tag("td") tr = close_tag("tr") def trans_line(line): tokens = line.split() return tr(reduce(add, map(td, tokens))) + "\n" def trans(text): lines = [line for line in text.splitlines() if line.strip()] return reduce(add, map(trans_line, lines)) if __name__ == '__main__': print trans(text) ※ 引述《apua (Apua)》之銘言: : ※ 引述《cantakeyeofu (不看你的眼)》之銘言: : : 現在我有個文字檔案,內容如下: : : Apple 蘋果 123 : : HTC 宏達電 456 : : Samsung 三星 789 : : Sony 索尼 234 : : Asus 華碩 345 : : 我想要把這個檔案內容變成: : : <tr><td>Apple</td><td>蘋果</td><td>123</td></tr> : : <tr><td>HTC</td><td>宏達電</td><td>456</td></tr> : : <tr><td>Samsung</td><td>三星</td><td>123</td></tr> : : <tr><td>Sony</td><td>索尼</td><td>123</td></tr> : : <tr><td>Asus</td><td>華碩</td><td>123</td></tr> : : 不知道有什麼比較好的作法?謝謝 : ^^^^^^^^^^^^ : 比較好的作法: : # -*-coding=utf8-*- : # s = open("FILENAME").read() : s = \ : '''Apple 蘋果 123 : HTC 宏達電 456 : Samsung 三星 789 : Sony 索尼 234 : Asus 華碩 345''' : trans_with_td = lambda line: '<td>'+'</td><td>'.join(line)+'</td>' : trans_with_tr = lambda lines: '<tr>'+'</tr>\n<tr>'.join(lines)+'</tr>\n' : tag_line_with_tr = lambda lines: trans_with_tr(lines) : tag_item_with_td = lambda lines: [trans_with_td(line) for line in lines] : lines_to_items = lambda lines: [line.split() for line in lines] : text_to_lines = lambda text: [line.rstrip() for line in text.split('\n')] : run = lambda obj, fcn: obj.data.append(fcn(obj.data.pop())) : text = type("",(),{}) : text.data = [s] : text.__str__ = lambda self: str(self.data[0]) : text.to_str = lambda self: self.data[0] : text.line2tr = lambda self: run(self,tag_line_with_tr) or self : text.item2td = lambda self: run(self,tag_item_with_td) or self : text.to_items = lambda self: run(self,lines_to_items) or self : text.to_lines = lambda self: run(self,text_to_lines) or self : result = text().to_lines().to_items().item2td().line2tr().to_str() : print result -- 1. Write down the problem. 2. Think real hard. 3. Write down the solution. “The Feynman Algorithm” as described by Murray Gell-Mann -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.157.96 ※ 編輯: beatitude 來自: 111.251.157.96 (11/05 00:36)
文章代碼(AID): #1GbfaRU_ (Python)
文章代碼(AID): #1GbfaRU_ (Python)