TSV到HTML

我想知道该小组中的任何人是否可以将我指向 将如何使用Python转换TSV文件的方向 到HTML. 我一直在寻找资源,但只看到 有关将CSV转换为TSV的信息. 特别是我想要的 取值并将它们插入HTML表中. 我一直在尝试自己弄清楚,从本质上讲,这是 我想出的. 我在正确的道路上吗? 我真的有 感觉我正在这里重新发明轮子. 1)在代码中定义A CSS 2)使用正则提取选项卡之间的信息 3)将值包裹在适当的标签中,然后将其插入表中. 4)编写.html文件 再次感谢您的耐心配合, 布莱恩

# 回答1

>我想知道小组中的任何人是否可以指出我 听起来您只想做类似的事情 打印"

" 对于文件中的行(" in.tsv"): 打印" " 项目= line.split(" \ t") 对于项目中的项目: 打印" "%项目 打印" " 打印"
%s

" 如果您需要清洁每个物品,它会变得更加复杂 对于HTML实体/脚本/等...但这通常只是一个 您要包裹该项目的功能: 打印"

%s

"%Escapeentity(项目) 使用您手头上的任何"逃生"功能. 例如. 来自XML.SAX.SAXUTILS IMPORT ESCEP : : 打印"

%s

"%逃脱(项目) 它不会优雅地尝试使用 ,和排,但有点 玩具应该解决这个问题. -tim

# 回答2

> 1)在代码中定义A CSS
# 回答3

布莱恩写道: 导入CSV 来自XML.SAX.SAXUTILS IMPORT ESCEP def tsv_to_html(input_file,output_file): output_file.write('

\ n') 对于CSV.Reader中的行(input_file,'excel-tab'): output_file.write(' ') 对于COL,连续: output_file.write(' '%逃生(col)) output_file.write(' \ n') output_file.write('
%s

') 用法示例:

foo bar baz
qux quux quux
# 回答4

首先让我说我感谢每个人都有的回应 给出. 我的一个朋友是Ruby程序员,但对Python一无所知. 他给了我下面的脚本,它确实做了我想要的,只有它是 在红宝石中. 不知道Ruby这对我来说是希腊人,我想 在Python中重写它. 然后我问,这本质上是其他其他人表明我要做的事情, 还是在不同的是一起? 代码: TSVTOHTML类 @@ styleblock = << - endmark

Endmark def tsvtohtml :: wraptag(数据,标签,修改器="") 返回" <#{tag}#{modifier}>" + data +" \ n" 结束#wraptag def tsvtohtml :: makepage(sou RCE) pag ="" ROWNUM = 0 source.readlines.each {|记录| 行="" record.chomp.split(" \ t").每个{| field | #用&nbsp;替换空白字段 field.sub!(/^$/,"&nbsp;") #包装在TD标签中,指定样式 行 += wraptag(field," td"," class = \"" + ((Rownum == 0)?" CellTitle":" Cell#{Rownum%2}") + " \")) } Rownum += 1 #包装在TR标签中,将行添加到页面 page + = wraptag(row," tr") +" \ n" } #完成页面格式 [[" table"," cellpadding = 0 cellspacing = 0 border = 0"],"身体"," html" ].each {| tag | page = wraptag(@@ styleblock," head") + page如果tag ==" html" page = wraptag(页,*标签) } 返回页面 结束#makepage 结束#类 #stdin-> convert-> stdout 打印tsvtohtml.makepage(stdin)

# 回答5

布莱恩写道: Leif的Python示例使用CSV模块,该模块了解更多 关于CSV/TSV格式的特殊性. Ruby示例预处了<样式> ... 块. Ruby示例将每一行分开以形成一个表行,并在 标签,形成单元格. 关于TSV/CSV格式的事情是它们不是一种格式. 你 需要检查您的TSV创建者如何生成TSV文件: 它会在文本字段周围引用引号吗? 什么样的报价? 它如何代表零字段? 您可能会得到包括新线在内的字段吗? - P.S. 我不是红宝石程序员,只需阅读源;-)
# 回答6

丹尼斯, 谢谢您的回复. 您的代码对我非常有帮助. 我 认为实际上看在Python应该如何完成它是很多 比花费数小时的反复试验更具教育意义. 一个问题(这是一个话题,我仍然很难获得我的 武器周围). 为什么引用了StyleBlock Tripple中的文字? 再次感谢, 布莱恩
# 回答7

布莱恩写道: 因为三重引用的字符串可以跨越线条并包含单引号 和双引号. - - - 斯科特·戴维·丹尼尔斯(Scott David Daniels) 丹尼斯·李·比伯(Dennis Lee Bieber)写道:这不是周围最好的代码 - 从假设Ruby所做的事情(我不做Ruby-太多的Perl Idiom)中,我将其砍成了几乎是线条. 引号允许:1)在块中使用单引号而无需逃脱; 2)允许字符串跨越多行. 普通字符串引用必须是解析器的一条逻辑行. 我实际上从未见过有人在Python中使用线路延续角色. 三重引号看起来比解析器串联更干净. 替代方案是:线延续:styleblock ='\ n \

\ n \'注意\ n \作为每行的末端; \ n是在生成的HTML上保持格式(否则一切都将是一条长线),然后 Final \(必须是线路的物理末端)表示"该线的继续". 另请注意,我使用的不是"避免在文本/CSS上逃脱". 解析器串联:styleblock =(' \ n")请注意()原始具有""""""的用法. 另请注意,每行都有开始/结束时的引号(首先有'避免逃脱文本/CSS). 没有分隔每条线的逗号(\ n仍用于格式化). 使用()创建一个表达式,而Python足够好,可以在多行(我在一些斑点中使用该功能将呼叫参数放在多行)上,以使()或[列表],{diques}内部的一个拆分表达式在多行中使用)). . 两个彼此相邻的字符串" String1"" String2"被解析为一个字符串" String1String2",使用"""(或''')是这些选择中最干净的,尤其是如果您想进行文本的预性布局 .它的工作类似于基本上说的Ruby/Perl构造:将所有文本复制到Marker_String的下一次出现. 感谢您的解释,现在很有意义. 布莱恩

标签: python

添加新评论