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加方格。 展开
我的预期输出应该是ab,但是我在pycharm中直接输出窗口中看没问题,
但是在idle中看是abc外加一个方格特殊字符。在输出到文件中,也是abc外加一个方格特殊字符。
我想知道怎么才能输出到文件中时,输出成ab,而不是带有特殊字符形式的abc加方格。 展开
展开全部
\b是一个控制字符,控制字符只在终端(控制台)中生效,用来控配罩制终端的行为。
在文件中,控制字符被认为是一个普通字符,不具有控制功能。idle的实现是重定向输入输出流到程序窗口中,因明卖档此控制字符在idle中也激乱是无效的。
在文件中,控制字符被认为是一个普通字符,不具有控制功能。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'))
展开全部
就readline()按行读就好了,因为python不会过滤掉任盯腊碧何东凯举西。局简然后遍历返回的字符串中的每个字符,用ord()函数获取字符对应的ascii值。
追问
谢谢,python不会过滤掉任何东西,但是对于退格键,python选择默认不处理啊,我希望他生效并处理,
比如my_str=‘ab\nc’打印出来或者输出到文件,\n就是生效成换行,但是my_str=‘ab\bc’打印或者输出到文件就是ab乱码c,我希望\b生效成退格,最终输出到文件中的是ac
这样应该怎么办呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询