V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sjmcefc2
V2EX  ›  编程

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

  •  
  •   sjmcefc2 · 2019-08-12 16:44:21 +08:00 · 4607 次点击
    这是一个创建于 1962 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    17 条回复    2019-08-13 12:14:48 +08:00
    tinytoadd
        1
    tinytoadd  
       2019-08-12 17:44:06 +08:00 via Android
    自己写一个
    xiri
        2
    xiri  
       2019-08-12 18:31:08 +08:00 via Android
    简单的读取文件名,字符串拼接再写入新文件不就可以了么
    ipwx
        3
    ipwx  
       2019-08-12 18:33:29 +08:00
    你连命名规则都不说,我们怎么帮你。。。
    sjmcefc2
        4
    sjmcefc2  
    OP
       2019-08-12 19:11:51 +08:00
    规则是 A01 BCD 201901 => BCD.TXT

    前三位,中间三位 后面六位
    sjmcefc2
        5
    sjmcefc2  
    OP
       2019-08-12 19:23:37 +08:00
    主要是不太理解怎么在文件中进行替换。
    ipwx
        6
    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
        7
    sjmcefc2  
    OP
       2019-08-12 19:28:59 +08:00
    Learn from 'A01BCD201901.TXT'
    to BCD

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

    两个关键词,字符串拼接和 io,加个 python 前缀随便网上一搜都有一大堆的,建议先搜完之后没有解决再来问
    sjmcefc2
        9
    sjmcefc2  
    OP
       2019-08-12 19:43:26 +08:00
    这种可行吗?有个一文件模板,然后再固定的位置进行替换操作?
    loading
        10
    loading  
       2019-08-12 20:03:26 +08:00 via iPhone   ❤️ 1
    @ipwx 你直接正则,怕是想吓死楼主。
    sjmcefc2
        11
    sjmcefc2  
    OP
       2019-08-13 00:27:36 +08:00
    Learn from 'A01BCD201901.TXT'
    to BCD
    怎么把文件内容写成这种有换行的格式呢
    ipwx
        12
    ipwx  
       2019-08-13 01:12:45 +08:00   ❤️ 1
    @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
        13
    sjmcefc2  
    OP
       2019-08-13 08:17:19 +08:00
    @ipwx 非常感谢。.format 一直记不起来用,都是
    f.write(" LEARN \n")
    f.write(" To \n")
    这种换行,tab 缩进,对齐大家都怎么处理呢?
    还想请教一下, 如果想在文件里打印一个表格,比如

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

    文本文件输出表格可以用库,比如 https://robpol86.github.io
    Web results
    terminaltables 3.1.0 — terminaltables
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 02:06 · PVG 10:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.