【发布时间】:2022-12-10 02:16:14
【问题描述】:
我试图找到一种有效的方法来将一个文件中的文本拆分然后重新组合成两个单独的文件。它有很多事情要做,比如删除小数点,在金额字段和填充中反转符号(+ 变成 - 和 - 变成 +)。例如:
输入文件input.txt:
(第一行只是为了更容易地给出字符位置而不是计数,它不存在于输入文件中,“|”只是为了说明位置而已)
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345
| | | | | | | ("|" shows position)
123456789XXPPPPPPPPPP NNNNNN#1404.58 #0.00 0 1
987654321YYQQQQQQQQQQ NNNNNN#-97.73 #-97.73 1 1
777777777XXGGGGGGGGGG NNNNNN#115.92 #115.92 0 0
888888888YYHHHHHHHHHH NNNNNN#3.24 #3.24 1 0
上面第 85 个字符包含“1”的任何行都会转到一个文件,例如 OutputA.txt 重新排列如下:
PPPPPPPPPP~~NNNNNN123456789XX~~~-0000140458-0000000000
QQQQQQQQQQ~~NNNNNN987654321YY~~~+0000009773+0000009773
以及任何包含“0”的行,因为上面的第 85 个字符会转到另一个文件 OutputB.txt,重新排列如下:
GGGGGGGGGG~~NNNNNN777777777XX~~~-0000011592-0000011592
HHHHHHHHHH~~NNNNNN888888888YY~~~-0000000324-0000000324
这看起来很复杂,但如果我可以将输入行的每一部分作为不同的变量,然后以不同的顺序将它们写出来,右对齐用 0 填充的数量,并根据最后一列将它们拆分成不同的文件。不确定如何将所有这些东西一次性放在一起。
我尝试根据第 85 个字符是 1 还是 0 将每一行打印到不同的文件中,然后尝试创建变量,比如从第一个字符到第 11 个字符是 varA,接下来的 10 个是 varB 等......但它变得复杂很快,因为我需要将 + 更改为 - 并将 - 更改为 +,然后用零填充并更改间距。它有点生气。这应该可以通过一个脚本实现,但我无法将所有部分放在一起。
我一直在寻找教程,但似乎没有任何内容涵盖基于条件的抓取,同时填充、重新排列、拆分等。
提前谢谢了
【问题讨论】:
-
请更新问题以显示您的编码尝试以及您的代码生成的(错误)输出