作者apua (Apua)
看板Python
标题Re: [问题] 批次读取字串、加入文字
时间Sat Nov 3 17:35:01 2012
※ 引述《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
--
比较好....累
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.159.73
※ 编辑: apua 来自: 123.204.159.73 (11/03 17:38)
1F:→ pi3141:我不是专家 但是我觉得这样有点累XDDD 11/04 00:23
2F:推 swpoker:有点太OO了吧~要直觉点采用script的写法 11/05 11:51
3F:→ apua:认真就输了XDDDDDDD 11/08 09:27