零基础学编程019:生成群文章目录

在2016年10月底,我建立了“分享与成长群”,每人在每月都要输出一篇原创文章,一开始人数不多,汇总成PDF的工作量并不大,但现在人数已经超过70人了,该写个程序来解决这种重复性的工作了。

最终问题描述:

群分享的文章已经用Mikecrm表单工具采集到一个xls文件中,包含“姓名、文章标题、文章链接”三列,想生成一份所有文章的合集,用PDF格式分享出来。

可以在公众号后台输入“群分享”,看看以前几期的群分享PDF文档。

XLS文件样例

问题分解:

直接生成Doc或PDF相当有难度,根据《怎样解题》的策略,面对相对复杂的问题,首先要办法把问题分解为多个简单的过程,我把该问题分解为两步:

  • 第一步:先根据XLS生成一份HTML文章目录,点击文末左下角的“阅读原文”看输出的最终效果
  • 第二步:再利用开源的转换工具生成DOC或PDF,我已经有思路,正在试验中,以后再发布

本次先解决第一步的问题。对于编程新手来说,这一步也具有相当的难度,仍需要进一步地分解。最主要的难点在于编程新手很可能缺少读取文件、CSV、Makrdown、HTML等知识背景。

  1. 把XLS手工转换为CSV文件
  2. 写Python程序,把CSV转换为Markdown格式
  3. 把Markdown复制在“简书”平台中,即可直接发布,完成任务

什么是CSV?

就是一种逗号分隔的文本文件(Comma-Separated Values),详细内容请自行百度。

为什么不直接读XLS?

读文本文件相对容易些,Python中内置有专门的读取CSV的函数库,容易上手。当然也能找到读取XLS的函数库,但门槛相对高一些。

什么是Markdown?为什么不直接用HTML?

HTML是网页的描述语言,但它的描述太啰嗦了,而Markdown就相当简洁,可以让人专心写文章,减少排版的干扰,详细内容请自行百度吧。

试着读取csv

假设201701.csv文件存放在D盘根目录下,百度一下python中的csv读取教程,原来只需要4行,就可以读出其全部内容。

import csv reader = csv.reader(open('d:/201701.csv')) for line in reader : print(line)

网上查到的许多文章中写的是下面这行语句,在Python 3中运行会报错。

reader = csv.reader(open('d:/201701.csv', 'rb'))

这里先不介绍open函数的具体意思,有经验的C程序员看见 'rb' 可以猜出问题的原因。

用markdown表示的超链接

我们想要让文章标题显示为一个超链接,点击后跳转到文章的http超链接。在markdown中是这样表达的,非常简洁。

[title](URL)

举个例子:

[45岁大叔的5年GTD旅程](http://mp.weixin.qq.com/s/F9pTuAkoDCXAaWvqDGcTFA)

把这段文字放在简书中(请开启markdown选项),发布之后,就会看到一个超链接:45岁大叔的5年GTD旅程

最终代码:

import csv reader = csv.reader(open('d:/201701.csv')) for line in reader : name = line[0] #第一列是姓名 title = line[1] #第二列是标题 url = line[2] #第三列是链接 print(name, "[" + title + "](" + url + ")" )

总共写了7行代码,中间三行是为了让新手看明白,实际上用4行代码就够了。运行程序后,输出的内容是这样的:

把这些文字复制到简书平台,发布,完成任务。请点击文末左下角的“阅读原文”看最后生成的网页效果。

小结:

  • 问题描述:xls -> pdf
  • 分步解决:xls -> csv -> markdown -> html -> pdf
  • 首先解决:csv -> markdown,其它步骤用手工解决
  • csv是逗号分隔的文本文件,用文本编辑器可以查看
  • import csv 用于导入csv函数库
  • csv.reader 可以直接读入csv文件,形成一个列表
  • 在markdown语法中,[title](URL) 表示超链接
  • 用print 语句拼出想要的文本
  • 把markdown文本复制到简书中,发布为html网页

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

LaTeXila:Linux 的多语言 LaTeX 编辑器简介

豌豆贴心提醒,本文阅读时间7分钟 LaTeXila 是一个多语言 LaTeX 编辑器,专为那些偏爱 GTK+ 外观的 Linux 用户设计。这个软件除了操作简...

3309
来自专栏FreeBuf

一名代码审计新手的实战经历与感悟

blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简单到困难,逐步提升。因此我建议大家的审计流程为——DVWA——blueCMS——其他小...

3206
来自专栏.net core新时代

我的前端学习历程

  很难想象一个半年前还在做后台开发,对前端知之甚少的我,现在也可以从事前端开发了。这半年的学习过程将会是我人生一笔宝贵的财富,这让我想到一句话“在成长的道路上...

1866
来自专栏无原型不设计

在Mockplus中,如何做鼠标悬停时菜单下拉的效果?

了解Mockplus的用户会知道,该原型工具目前并不直接支持鼠标悬停功能。但我经过尝试,发现想用它实现一个鼠标悬停事件并不是什么难事,比如网页设计中很常见的鼠...

2936
来自专栏铭毅天下

干货 | 知识库全文检索的最佳实践

很多文档已经被转化成扫描版的PDF,之前我们认为PDF类型是最终的文档格式,现在看来,我们想听听建议(比如:xml是不是更好呢?)

551
来自专栏大数据挖掘DT机器学习

使用Python编写网络爬虫抓取视频下载资源

Python因为其强大的字符串处理能力,以及urllib2,cookielib,re,threading这些模块的存在,用Python来写爬虫就简直易于反掌了。...

3246
来自专栏互联网杂技

20个为前端开发者准备的文档和指南2

1.CSS Vocabulary(CSS词汇表) (需自备墙梯才可以访问) 点击该应用,将会使你了解到CSS语法所有不同的部分,和它们对应的属性名是什么。 ? ...

32910
来自专栏java一日一条

我的编码习惯 - 参数校验和国际化规范

今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把...

311
来自专栏Python爬虫与数据挖掘

如何利用BeautifulSoup选择器抓取京东网商品信息

昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了。不过小伙伴们...

482
来自专栏编程

Python教学——第七天

如果你前面都跟着文章做了,相信你已经自己在私下也了解了很多知识 如果你之前全都没有跟着做,也没有关系,至少你可以了解一个概念,对将来动手的时候会有一定的帮助 如...

1865

扫描关注云+社区