Re: [問題] 批次讀取字串、加入文字
我的版本,
光使用函數沒辦法像用 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)
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章