根据文件名拼写 txt 文件,有什么好办法呢

2019-08-12 16:44:21 +08:00
 sjmcefc2

现在有 A01BCD201901.TXt 文件名的文件, 要根据这个文件名生成一个 txt 文件:BCD.txt 内容是 Learn from 'A01BCD201901.TXT' to BCD

有什么简单的办法呢? python 有现成的包吗

4607 次点击
所在节点    编程
17 条回复
tinytoadd
2019-08-12 17:44:06 +08:00
自己写一个
xiri
2019-08-12 18:31:08 +08:00
简单的读取文件名,字符串拼接再写入新文件不就可以了么
ipwx
2019-08-12 18:33:29 +08:00
你连命名规则都不说,我们怎么帮你。。。
sjmcefc2
2019-08-12 19:11:51 +08:00
规则是 A01 BCD 201901 => BCD.TXT

前三位,中间三位 后面六位
sjmcefc2
2019-08-12 19:23:37 +08:00
主要是不太理解怎么在文件中进行替换。
ipwx
2019-08-12 19:27:45 +08:00
import re

file_name = 'A01BCD201901.TXt'
middle = re.match('^.{3}(.{3}).{6}\.txt$', file_name, re.I).group(1)

print(middle)
sjmcefc2
2019-08-12 19:28:59 +08:00
Learn from 'A01BCD201901.TXT'
to BCD

内容是这种换行的
Yucklys
2019-08-12 19:30:23 +08:00
读取文件名,固定长度的话正则都不需要,直接字符串剪切一下获取 BCD,新建文档 BCD.txt ,拼接一下字符写入。

两个关键词,字符串拼接和 io,加个 python 前缀随便网上一搜都有一大堆的,建议先搜完之后没有解决再来问
sjmcefc2
2019-08-12 19:43:26 +08:00
这种可行吗?有个一文件模板,然后再固定的位置进行替换操作?
loading
2019-08-12 20:03:26 +08:00
@ipwx 你直接正则,怕是想吓死楼主。
sjmcefc2
2019-08-13 00:27:36 +08:00
Learn from 'A01BCD201901.TXT'
to BCD
怎么把文件内容写成这种有换行的格式呢
ipwx
2019-08-13 01:12:45 +08:00
@sjmcefc2

import codecs
import re

file_name = 'A01BCD201901.TXt'
middle = re.match('^.{3}(.{3}).{6}\.txt$', file_name, re.I).group(1)

with codecs.open('{}.txt'.format(middle), 'wb', 'utf-8') as f:
____f.write('Learn from \'{}\'\nto {}'.format(file_name, middle))

自行把下划线 _ 替换成空格。
sjmcefc2
2019-08-13 08:17:19 +08:00
@ipwx 非常感谢。.format 一直记不起来用,都是
f.write(" LEARN \n")
f.write(" To \n")
这种换行,tab 缩进,对齐大家都怎么处理呢?
还想请教一下, 如果想在文件里打印一个表格,比如

常见的发票票据这种,是不是有这种包可以快速的套用设计呢?
ipwx
2019-08-13 09:10:23 +08:00
@sjmcefc2 你需要的不是提问,是把 python 认真学一遍
sjmcefc2
2019-08-13 11:12:58 +08:00
是啊是啊,都是现学现用。看起来是还是用\t 之类的缩进了。
想着可能我这个需求也奇葩,有点类似以前的 ascii 艺术。
@ipwx
ipwx
2019-08-13 12:14:25 +08:00
@sjmcefc2 这些都是基本语法的东西,建议先看完书,不要现学现用。

文本文件输出表格可以用库,比如 https://robpol86.github.io
Web results
terminaltables 3.1.0 — terminaltables
ipwx
2019-08-13 12:14:48 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/591232

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX