简单的问题,但我挣扎了太多时间。基本上我想用\(反斜杠)分割字符串。
a = "1\2\3\4"
试图逃避反斜杠,但它似乎不起作用:
print(a.split('\'))
print(a.split('"\"'))
print(a.split('\\'))
print(a.split('"\\"'))
我想得到这个结果:
['1','2','3','4']
非常感谢提前
答案 0 :(得分:36)
你有一个正确的想法,逃避反斜杠,但不管它看起来如何,你的输入字符串实际上没有任何反斜杠。你也需要在输入中转义它们!
>>> a = "1\\2\\3\\4" # Note the doubled backslashes here!
>>> print(a.split('\\')) # Split on '\\'
['1', '2', '3', '4']
如果输入可能有很多反斜杠,您也可以使用raw string literal作为输入。这种符号看起来更清晰(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'
答案 1 :(得分:5)
您可以使用a.split('\\')
以反斜杠分割字符串。
在您的情况下,这不起作用的原因是您的作业\x
中的a = "1\2\3\4"
被解释为八进制数。如果您在字符串前加r
,则会得到预期的结果。
答案 2 :(得分:2)
根据这个答案:
https://stackoverflow.com/a/2081708/3893465
你需要在分割之前逃避反斜杠:
>>> a = "1\2\3\4"
>>> a.encode('string-escape').split("\\x")
['1', '02', '03', '04']
答案 3 :(得分:0)
'\ r'为我完成了窍门
var = 'a\b\c\d'
var.split('\r')
['a', 'b', 'c', 'd']
答案 4 :(得分:0)
涵盖所有特殊情况,例如\ 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))
答案 5 :(得分:0)
您只需将反斜杠替换为管道(|),然后继续执行程序即可。
所有文本编辑器都有一个替换字符选项,您可以在其中用\ |替换每个出现的\。
This is my text file containing words separated by backslashes
Below is our desired output (formatted file) !
Here is the list of strings that you can now use in your program !
可以在Windows,Linux等上使用相同的方法。以及!