python语言中控制字符的处理

假定我有一个字符串my_str='abc\b'或者my_str='abc\x08',不管\b还是\x08都是退格的意思。我的预期输出应该是ab,但是我在pycharm中直... 假定我有一个字符串my_str = 'abc\b'或者my_str='abc\x08',不管\b还是\x08都是退格的意思。
我的预期输出应该是ab,但是我在pycharm中直接输出窗口中看没问题,
但是在idle中看是abc外加一个方格特殊字符。在输出到文件中,也是abc外加一个方格特殊字符。
我想知道怎么才能输出到文件中时,输出成ab,而不是带有特殊字符形式的abc加方格。
展开
 我来答
GTA小鸡
高粉答主

2019-08-01 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
\b是一个控制字符,控制字符只在终端(控制台)中生效,用来控配罩制终端的行为。
在文件中,控制字符被认为是一个普通字符,不具有控制功能。idle的实现是重定向输入输出流到程序窗口中,因明卖档此控制字符在idle中也激乱是无效的。
追问
有办法变通处理下吗?比如通过什么函数对my_str字符串处理之后再保存,总之我字符串是'abc\b',结果需要保存文件为ab
追答
很遗憾,这属于操作系统的行为,并不是由python控制。换成其他语言,表现也是一样的。在文件中用于定位的“光标”称为文件指针,需要通过seek()来控制文件指针的位置,\b字符并没有用。
但是你可以通过模拟控制台的行为先在内存中预先生成要写入的内容,然后再写入文件中。
def sim_console(content):
buffer = []
for ch in content:
if ch == '\b':
if buffer:
buffer.pop()
else:
buffer.append(ch)
return ''.join(buffer)
with open('output.txt', 'w') as f:
f.write(sim_console('abc\b'))
啊切二4913
2019-08-01 · TA获得超过1万个赞
知道大有可为答主
回答量:6486
采纳率:87%
帮助的人:443万
展开全部
就readline()按行读就好了,因为python不会过滤掉任盯腊碧何东凯举西。局简然后遍历返回的字符串中的每个字符,用ord()函数获取字符对应的ascii值。
追问
谢谢,python不会过滤掉任何东西,但是对于退格键,python选择默认不处理啊,我希望他生效并处理,
比如my_str=‘ab\nc’打印出来或者输出到文件,\n就是生效成换行,但是my_str=‘ab\bc’打印或者输出到文件就是ab乱码c,我希望\b生效成退格,最终输出到文件中的是ac
这样应该怎么办呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式