在Python中按反斜杠分割字符串

35 投票
6 回答
100110 浏览
提问于 2025-04-18 15:25

这是个简单的问题,但我纠结了很久。基本上,我想把一个字符串按反斜杠(\)分开。

 a = "1\2\3\4"

我尝试过对反斜杠进行转义,但似乎不管用:

 print(a.split('\'))
 print(a.split('"\"'))
 print(a.split('\\'))
 print(a.split('"\\"'))

我想得到这个结果:

 ['1','2','3','4']

非常感谢!

相关问题:

6 个回答

1

这里提到了一些特殊字符,比如 \a、\b、\f、\n、\r、\t 和 \v。这些都是在编程中用来表示特定功能的字符。例如,\n 代表换行,\t 代表制表符(也就是按下 Tab 键的效果)。如果你想了解更多关于字符串的内容,可以查看这个链接:字符串字面量

def split_str(str):
    ref_dict = {
        '\x07':'a',
        '\x08':'b',
        '\x0C':'f',
        '\n':'n',
        '\r':'r',
        '\t':'t',
        '\x0b':'v',                
    }    
    res_arr = []
    temp = ''
    for i in str :
        if not i == '\\':
            if i in ref_dict:
                if not temp == "":
                    res_arr.append(temp)
                res_arr.append(ref_dict[i])
                temp = ''
            else:    
                temp += i
        else:
            if not temp == '':
                res_arr.append(temp)
            temp = ''
    res_arr.append(temp)
    return res_arr


str = "a\a\b\f\n\r\t\v\c\d\e\f\i"
print(split_str(str))    
2

'\r' 对我来说有效

var = 'a\b\c\d'  
var.split('\r')
['a', 'b', 'c', 'd']
3

根据这个回答:

https://stackoverflow.com/a/2081708/3893465

在进行分割之前,你需要对反斜杠进行转义,像这样:

>>> a = "1\2\3\4"
>>> a.encode('string-escape').split("\\x")
['1', '02', '03', '04']
5

你可以用 a.split('\\') 来通过反斜杠把一个字符串分开。

你遇到的问题是因为在你的赋值语句 a = "1\2\3\4" 中,\x 被当成了八进制数字来理解。如果你在字符串前面加上 r,就能得到你想要的结果。

61

你想得没错,确实需要对反斜杠进行转义,但看起来你的输入字符串其实并没有反斜杠。你也需要在输入中对它们进行转义!

>>> a = "1\\2\\3\\4"  # Note the doubled backslashes here!
>>> print(a.split('\\'))  # Split on '\\'
['1', '2', '3', '4']

如果你的输入字符串中可能有很多反斜杠,你也可以使用原始字符串字面量。这种写法看起来更简洁(我觉得),但也有一些限制:记得去看看文档!

>>> a = r"1\2\3\4"
>>> print(a.split('\\'))
['1', '2', '3', '4']

如果你在其他地方得到了a,而a.split('\\')没有正确地在可见的反斜杠处进行分割,那就说明里面有其他东西,而不是实际的反斜杠。试试print(repr(a)),看看这个“字面量”字符串实际上是什么样子的。

>>> a = '1\2\3\4'
>>> print(a)
1☻♥♦
>>> print(repr(a))
'1\x02\x03\x04'

>>> b = '1\\2\\3\\4'
>>> print(b)
1\2\3\4
>>> print(repr(b))
'1\\2\\3\\4'

撰写回答