【发布时间】:2013-05-18 02:18:01
【问题描述】:
我的文件包含以下几行:
info face="asd" size=49 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
common lineHeight=52 base=43 scaleW=128 scaleH=128 pages=1 packed=0
page id=0 file="asd.png"
chars count=9
char id=32 x=58 y=82 width=0 height=0 xoffset=0 yoffset=40 xadvance=9 page=0 chnl=0
char id=179 x=34 y=42 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=181 x=94 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=183 x=2 y=42 width=30 height=38 xoffset=2 yoffset=6 xadvance=27 page=0 chnl=0
char id=185 x=2 y=2 width=30 height=38 xoffset=2 yoffset=6 xadvance=27 page=0 chnl=0
char id=187 x=64 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=189 x=34 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=191 x=34 y=82 width=22 height=36 xoffset=2 yoffset=8 xadvance=18 page=0 chnl=0
char id=193 x=2 y=82 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
kernings count=0
我需要找到id 值,然后根据简单的条件修改(从值中添加/减去一些数字)该数字并写回文件。我的尝试是:
input = open('file.txt', 'r')
for line in input:
我想在这里捕获char id= 行的 3 个部分、值和行的其余部分。然后修改值并创建新字符串。但我怀疑它在 Python 中是否有效。另外我不确定是否有办法处理同一个文件,而不是创建新文件、删除旧文件并重命名为旧名称以修改文件内容。
【问题讨论】:
-
" 我不确定是否有办法处理同一个文件,而不是创建新文件、删除旧文件并重命名为旧文件" 是的,有,但条件是必须替换的字符串的每个部分都必须比替换的部分更长或长度相同。这里以这种方式处理的一个例子:(stackoverflow.com/a/16591889/551449) 关键是在
'rb+'模式下打开文件。但是我给出的示例相当复杂,因为在这个文件中,要替换的模式可能会连续重复。在你的情况下,我认为情况并非如此。
标签: python python-2.7