[英]Split a string by backslash in python
一个简单的问题,但我为此苦苦挣扎了太多时间。 基本上我想用\\(反斜杠)分割一个字符串。
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']
如果可能有很多反斜杠,您也可以使用原始字符串文字作为输入。 这个符号看起来更清晰(IMO),但它确实有一些限制:阅读文档!
>>> 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'
您可以使用a.split('\\\\')
通过反斜杠拆分字符串。
这在您的情况下不起作用的原因是您的赋值a = "1\\2\\3\\4"
中的\\x
被解释为八进制数。 如果您在字符串前加上r
,您将获得预期的结果。
根据这个答案:
https://stackoverflow.com/a/2081708/3893465
在拆分之前,您需要转义反斜杠:
>>> a = "1\2\3\4"
>>> a.encode('string-escape').split("\\x")
['1', '02', '03', '04']
'\\r' 对我有用
var = 'a\b\c\d'
var.split('\r')
['a', 'b', 'c', 'd']
涵盖所有特殊情况,如 \\a,\\b, \\f, \\n, \\r, \\t, \\v ( String Literals )
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 等上使用。 还有!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.