Python 板


LINE

各位大大好,小弟剛接觸python約一個月 目前都是在yt看影片自學 上週終於學到網頁爬蟲,範例是抓PTT版面標題 於是就自己寫了一個抓取留言的小程式 也經過了很多次的修改後把內文跟作者ID之類的加上去 最近終於修改完成了 只是我發現輸出到記事本的格式挺讓人眼花的 想問看看有沒有辦法讓推文標籤ID及內容置左 時間置右這樣去做輸出 不管怎麼做好像都沒有辦法讓格式整齊點 所以上來問問看有沒有甚麼方法可以做到 程式有點長放在github裡 https://reurl.cc/qg7On3 應該有很多地方可以精簡,還在學習中請見諒 另外也有發現抓內容部分可能會因為發文者的文字習慣會有bug產生 更新 目前輸出到記事本的推文部分是這樣 推 ddavid: 置左置右這些可以去查一下Python format string的各種用法 08/20 12:45 → Lyumin: 查到都是print的用法 用在file.write裡好像沒作用 08/20 12:50 推 lycantrope: 你有查string format align? string先format再寫入吧 08/20 13:10 我想輸出成以下這樣 推 ddavid: 置左置右這些可以去查一下Python format string的各種用法 08/20 12:45 → Lyumin: 查到都是print的用法 用在file.write裡好像沒作用 08/20 12:50 推 lycantrope: 你有查string format align? string先format再寫入吧 08/20 13:10 程式是用while去做迴圈然後輸出 試過"{:>8}".format()還是沒辦法對齊 file.write(tag[x].text+id[x].text+msg[x].text+time[x].text) --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.43.66 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1629433719.A.118.html
1F:推 ddavid: 置左置右這些可以去查一下Python format string的各種用法 08/20 12:45
2F:→ Lyumin: 查到都是print的用法 用在file.write裡好像沒作用 08/20 12:50
3F:推 lycantrope: 你有查string format align? string先format再寫入吧 08/20 13:10
4F:推 s0914714: https://reurl.cc/MAp043 Python string format 08/20 13:25
5F:→ ddavid: 其實你問題裡也可以附上輸出的範例 08/20 13:52
6F:→ ddavid: 然後做法是先建好format string,才把該string寫入檔案 08/20 13:53
7F:推 s0914714: 先印看看字串是不是符合你預期 再寫入檔案應該就OK 08/20 14:03
※ 編輯: Lyumin (114.35.43.66 臺灣), 08/20/2021 15:29:39
8F:推 s0914714: format裡面要有參數 print("{:<10}123".format("你好")) 08/20 16:00
9F:→ s0914714: 可以先試試小功能再慢慢組合起來 08/20 16:00
有的有試過下面,只是要完全對再一起感覺不可能 file.write("{:<3}".format(tag[x].text)+"{:<3}".format(id[x].text)+"{:<50}".format(msg[x].text)+"{:>50}".format(time[x].text)) ※ 編輯: Lyumin (114.35.43.66 臺灣), 08/20/2021 16:10:32
10F:推 s0914714: 你應該是遇到中文對齊的問題 08/20 16:23
11F:推 ddavid: 你能實際給對齊失敗的例子嗎,搞不太清楚你的問題是哪一種 08/20 16:29
12F:→ ddavid: 不知道是你對齊設定下錯、上面說的中文還是資料特殊例外 08/20 16:30
13F:推 lycantrope: id加上冒號空格最長就14字,靠右對齊應該是"{:<14}"吧 08/20 16:34
14F:→ lycantrope: 推文本身中英混雜,要先處理全半形長度不同才補空格 08/20 16:35
15F:→ Lyumin: 原來ID加冒號最長是14!我是測試15可以讓標籤到冒號對齊, 08/20 16:53
16F:→ Lyumin: 只是目前推文內容跟時間還沒辦法,全打英文的最長字元是52 08/20 16:53
17F:→ Lyumin: ,這部分我就不太懂怎麼去切了 08/20 16:54
18F:→ Lyumin: https://i.imgur.com/OzDl4Bm.jpg 08/20 16:57
19F:→ Lyumin: 輸出時間無法對齊https://i.imgur.com/Ln3sRSg.jpg 08/20 16:58
20F:推 lycantrope: 你可以用unicodedata.east_asian_width 去計算width啦 08/20 17:07
21F:→ Lyumin: 腦袋還是卡關中,推文加空格到日期是54,但日期就是沒對齊 08/20 18:02
22F:推 TitanEric: 怎麼不乾脆寫成CSV 08/20 19:06
23F:推 lycantrope: 直接弄成dataframe一切都解決,堅持用plain text太累 08/20 19:49
24F:推 art1: 問題應該出在 format 不管對英文或中文都是算一個字元寬? 08/20 21:19
25F:→ art1: 所以你必須先算出實際的單字元總寬度再動態調整要用來對齊的 08/20 21:21
26F:→ art1: 數字 08/20 21:21
27F:→ art1: 或是直接修改 format 原始碼讓他把中文當成雙位元的字寬 08/20 21:23
28F:推 art1: https://reurl.cc/qg7K90 不知道這個解法是否能解決你的問題 08/20 21:27
29F:→ art1: 之前用一個自動換行的函式,也是去改原始碼才解決這問題 08/20 21:30
30F:推 lycantrope: https://reurl.cc/mL8pyA 先count字數寬度再補空格 08/20 21:59
感謝大大,用這個方法解決了,只是我有個疑問為什麼max count=60, 是因為使用unicodedata.east_asian_width查出來最大的字串是58只要設比他大就好嗎? 另外既然知道最大字元數是58,為什用format string的置左會沒有效果? https://reurl.cc/7rGY6D 今天增加好多知識阿 ※ 編輯: Lyumin (114.41.38.123 臺灣), 08/21/2021 01:07:36
31F:→ Hsins: 批踢踢的 BBS 本身是 Big5 編碼,要算字元長度補空格的話, 08/21 03:20
32F:→ Hsins: 建議可以將中英混合的字串轉成 big5 再算長度 08/21 03:20
33F:→ Hsins: 比如 'ptt'.encode('big5') 的結果會是 3 08/21 03:20
34F:→ Hsins: '批踢踢'.encode('big5') 的結果會是 6 08/21 03:21
35F:→ Hsins: len('ptt'.encode('big5')) 08/21 03:22
36F:→ Hsins: len('批踢踢'.encode('big5')) 08/21 03:22
37F:推 lycantrope: 原來可以用big5來計算,又學到一招了。 08/21 17:45
38F:→ Lyumin: 咦..不是utf8編碼嗎? 08/23 00:30







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP