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/cn.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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP