提问人:TimKostenok 提问时间:8/1/2023 最后编辑:TimKostenok 更新时间:8/1/2023 访问量:25
如何按位置从文件中删除符号
How to delete a symbol from file by its position
问:
我需要通过它在文件中的位置从 txt 文件中删除一个符号。例如,有一个文本文件:sample.txt
Hello, world!
Abcdef
hello
world
我需要删除位于第六个位置的字符:,
pos = 6
我尝试使用以下代码:
pos = 6
with open('sample.txt', 'r+') as f:
f.seek(pos - 1) # move to the position before ,
print(f.read(1)) # print the , character
f.seek(pos - 1) # return back to the position before ,
f.write('\r')
f.close()
这打印,就像我预期的那样,但文件现在看起来像这样:,
Hello
world!
Abcdef
hello
world
所以我的代码用新的行符号替换了字符,而不是回车符号。,
\n
\r
更新:
我的解决方案将符号替换为带有 ASCII 代码 13 (0D) 的符号,这并不能解决我的问题:,
答:
1赞
Barmar
8/1/2023
#1
VSCode 将 CR 显示为换行符。
要完全删除它,请不要用单个字符覆盖它。将文件的其余部分读入变量中,返回该位置,然后覆盖该变量。
pos = 6
with open('sample.txt', 'r+') as f:
f.seek(pos - 1) # move to the position before ,
print(f.read(1)) # print the , character
rest = f.read() # read the rest of the file
f.seek(pos - 1) # return back to the position before ,
f.write(rest)
f.truncate() # adjust the end of the file
顺便说一句,你不需要,当你使用时会自动完成。f.close()
with
评论
f.seek(-1, 1)