如何将python退格应用于字符串

2024-06-20 15:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根绳子

s = '--two \x08--three'

当我打印时

^{pr2}$

但我能做点什么吗

s='--two--three'

没有明确声明。在

我不需要存储,甚至不需要知道后面的空间。我只想在没有空格字符的情况下操作文本。我怎样才能做到这一点?在

编辑:希望我能澄清一下。假设我有两条线

test1 = 'a\bb' #b
test2 = 'b' #b

当它们被打印时,它们与用户是等价的,但是test1!=test2。我要做的是从终端提取一些输出。这个输出在整个过程中有退格。我希望能够操纵最终结果,搜索单词,编辑字符串,而不必担心空格。在

编辑2:我想我真正想要的是设置一个变量作为print语句的结果

a = print("5\bA") #a='A' #does not work like this

Tags: 文本声明编辑空间情况字符three空格
0条回答
网友
1楼 · 发布于 2024-06-20 15:15:13

这可以通过使用正则表达式反复应用replace操作来解决,直到字符串不再包含退格字符。或者,一个更复杂的正则表达式可能只需一次就可以解决它,但我将使用更简单的解决方案。在

import re

s = ' two \x08 three'

while '\x08' in s:
    s = re.replace('[^\x08]\x08', '', s)

replace操作删除后跟退格字符的非退格字符的所有实例。如果您不熟悉正则表达式,可以对表达式'[^\x08]\x08'进行如下解码:

^{pr2}$

您需要循环的原因是处理一个接一个有多个退格字符的情况。例如,对于字符串'foocar\x08\x08\x08bar',每次迭代只删除第一个退格,如下所示:

'foocar\x08\x08\x08bar'
'fooca\x08\x08bar'
'fooc\x08bar'
'foobar'
网友
2楼 · 发布于 2024-06-20 15:15:13

可以使用正则表达式将退格应用于字符串:

import re

def apply_backspace(s):
    while True:
        # if you find a character followed by a backspace, remove both
        t = re.sub('.\b', '', s, count=1)
        if len(s) == len(t):
            # now remove any backspaces from beginning of string
            return re.sub('\b+', '', t)
        s = t

现在:

^{pr2}$

相关问题 更多 >