python - 如何仅更改 txt 文件中的一列,使其他所有内容保持不变并尊重空格?
问题描述
我有一个包含很多行的文件。为了安全起见,从某种意义上说,我只是 c/p,它给出了我的文件的形状。
| 来自 2b97.pdb 的马提尼酒系统 | | 55601 | | 1ALA BB 1 13.904 5.512 1.259 | | 12VAL BB 12 4.199 35.292 21.353 | | 112VAL SCC 113 4.367 5.234 21.445 | | 1113CYS BB 1114 4.041 4.969 21.220 | | 11113CYS SCC11115 4.088 14.816 21.041 | | 19293DEC C55598 19.018 0.828 7.094 | | 9.05570 9.05570 30.02670 |
我需要在最后一列添加 0.1 个单位。
因此,我的输出文件应该看起来像这样:
| 来自 2b97.pdb 的马提尼酒系统 | | 55601 | | 1ALA BB 1 13.904 5.512 1.359 | | 12VAL BB 12 4.199 35.292 21.453 | | 112VAL SCC 113 4.367 5.234 21.545 | | 1113CYS BB 1114 4.041 4.969 21.320 | | 11113CYS SCC11115 4.088 14.816 21.141 | | 19293DEC C55598 19.018 0.828 7.194 | | 9.05570 9.05570 30.02670 |
最重要的是我的输出文件应该具有完全相同的空格、格式和 dtype。该文件中的所有内容都是一个字符串。
如果不尊重空格、格式和 dtype,那么我不能使用输出文件在我需要的程序中运行。
以防万一,我不需要保留初始文件(尽管我认为这部分与我添加无关)。
谢谢你的帮助。我试过了,但我的问题是我不能用 python 保持相同的形状。
解决方案
像另一个答案一样,我会使用字符串切片来获取最后一列,并使用字符串连接将行重新组合在一起。但是,我将decimal.Decimal
用于定点数学:
import fileinput
import decimal
import sys
files = ['x.txt']
for line in fileinput.input(files, inplace=True):
number = line[38:46]
try:
number = decimal.Decimal(number)
number += decimal.Decimal('.1')
number = '{:8}'.format(number)
line = line[:38] + number + line[46:]
except decimal.InvalidOperation:
pass
sys.stdout.write(line)
推荐阅读
- node.js - How to write a type definition file for a default exported class?
- gatsby - Gatsby - 在 Markdown 中使用绝对路径链接到图像
- android - 如何在 android Studio 中打印 ImageView 中显示的图像
- go - 按关联计数排序
- java - 由n个元素旋转的java数组在测试中给出了错误的输出
- javascript - 检测 ES6 类中的静态超级方法
- javascript - this.props 在 React.js 的 onClick 中未定义
- vb.net - 我可以用备份版本替换我的设置项目吗
- javascript - Javascript首次单击输入并带有建议在Safari中不起作用
- r - 在保留索引的同时绑定数据帧列表