1. 程式人生 > 其它 >零基礎學程式設計019:生成群文章目錄

零基礎學程式設計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 ---