作者bob123 ()
看板Python
标题Re: [问题] 批次读取字串、加入文字
时间Sat Oct 27 02:31:52 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>
: 不知道有什麽比较好的作法?谢谢
* 前一篇有板友说了用replace的方法, 小弟再提供几个
a= u"""Apple 苹果 123
HTC 宏达电 456
Samsung 三星 789
Sony 索尼 234
Asus 华硕 345"""
第1种: 帅气一行码, 但是下一次自己也看不懂
print u"\n".join(u"<tr>{0}</tr>".format(u"".join(u"<td>{0}</td>".format(j)
for j in i.split())) for i in a.splitlines())
第2种: 同上, 好懂一点的写法
def tr(lines):
lines = (u"<tr>{0}</tr>".format(td(i.split())) for i in lines)
return u"\n".join(lines)
def td(tokens):
return u"".join(u"<td>{0}</td>".format(i) for i in tokens)
print tr(a.splitlines())
第3种: 选对工具的写法
import re
b = re.sub(ur"(\S*)[ \t]?",ur"<td>\1</td>",a)
c = re.sub(ur"(?m)^(.*?)$",ur"<tr>\1</tr>",b)
print c
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.193.142
1F:→ tjjh89017:只能说regexp神好用,但神难学QAQ 10/27 13:29