这是一个简单的问题,但我已经苦恼了很长时间。基本上我想通过 \(反斜杠)来分割字符串。
a = "1\2\3\4"
尝试转义反斜杠,但似乎不起作用:
print(a.split('\'))
print(a.split('"\"'))
print(a.split('\\'))
print(a.split('"\\"'))
我希望你能翻译这个句子:
['1','2','3','4']
非常感谢您的提前帮助。
这是一个简单的问题,但我已经苦恼了很长时间。基本上我想通过 \(反斜杠)来分割字符串。
a = "1\2\3\4"
尝试转义反斜杠,但似乎不起作用:
print(a.split('\'))
print(a.split('"\"'))
print(a.split('\\'))
print(a.split('"\\"'))
我希望你能翻译这个句子:
['1','2','3','4']
非常感谢您的提前帮助。
你对于转义反斜杠的想法是正确的,但是尽管看起来像有反斜杠,但是你的输入字符串实际上没有任何反斜杠。你需要在输入字符串中也进行转义!
>>> 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'
print(a)
的结果是 1\2\3\4
,那么你确实有反斜杠,并且在 '\\'
上分割 会 分割它们。如果不是这样,那就意味着你里面有其他字符:尝试使用 print(repr(a))
来查看 a
的文字表示,包括转义字符。 - Henry Keiter你可以使用a.split('\\')
通过反斜杠来分割一个字符串。
在你的情况下,这种方法不起作用的原因是你的赋值语句a = "1\2\3\4"
中的\x
被解释为八进制数。如果你在字符串前加上r
,你会得到预期的结果。
>>> a = "1\2\3\4"
>>> a.encode('string-escape').split("\\x")
['1', '02', '03', '04']
'\r' does the trick for me
var = 'a\b\c\d'
var.split('\r')
['a', 'b', 'c', 'd']
涵盖所有特殊情况,如\a、\b、\f、\n、\r、\t、\v(字符串字面量)
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))
同样的方法也可以用于 Windows、Linux 等操作系统!
a = "1\2\3\4"
) 的方式创建字符串,那么问题就在于您的split
调用。请在字符串声明中转义 \ 或使用r""
。 - Peter DeGlopper