我想摆脱python中\后面的字符串中的字符
df5['Abbreviation'] = df5['Abbreviation'].str.strip('\')
df5['Data Type'] = df5['Data Type'].str.strip('\')
错误消息:
File "<ipython-input-150-c7763a76caaf>", line 1
df5['Abbreviation'] = df5['Abbreviation'].str.strip('\')
^
SyntaxError: EOL while scanning string literal
答案 0 :(得分:4)
在不忽略转义的情况下,字符串文字中不能只包含一个\
(或末尾,或者只有奇数个字符串)(因为它将转义右引号),因此您必须将其转义:
...str.strip('\\')
要在反斜杠后删除所有内容,可以使用apply
和split
:
rem = lambda s : s.split('\\')[0] + '\\'
df5['Abbreviation'] = df5['Abbreviation'].apply(rem)
df5['Data Type'] = df5['Data Type'].apply(rem)
此外,正如@ G.Anderson所指出的,如果您的字符串类似于标题上的字符串,则可以仅使用...str.strip()
,在这种情况下,您的代码可以是:
df5['Abbreviation'] = df5['Abbreviation'].apply(str.strip)
df5['Data Type'] = df5['Data Type'].apply(str.strip)
答案 1 :(得分:1)
正如MrGeek的回答所述,您必须避免反斜杠。
如果要在反斜杠后删除所有内容,只需执行以下操作:
test_str = test_str.str.split('\\')[0]
.split返回一个数组,由于我们只希望导致第一个反斜杠的内容,所以我们可以使用[0]获取第一个索引。
这将使所有内容恢复到第一个反斜杠。如果要包含反斜杠,则只需将其附加在末尾:
test_str = test_str.str.split('\\')[0] + "\\"
答案 2 :(得分:0)
您需要使用for
循环进行迭代,以剥离每个字符。这是一个示例:
string = "hit\n"
for i in ['\\n', '\\r']: string = string.strip(i)
答案 3 :(得分:0)
正如MrGeek的回答中所述,您需要添加两个斜杠来修复初始语法错误。在找到反斜杠或换行符之类的特殊字符后,要删除所有内容,无论它是什么,我发现最简单的解决方案是:
[x.com:x.audit_log_.audit_log_*]
哪些输出:
string = "Hello Stack \n\r\rOverflow!"
output = ""
print("In:", string)
for char in string:
if char == "\\" or char == "\n" or char == "\r":
break
else:
output += char
string = output
print("Out:", string)
这似乎不是最的最有效方法,但是对于像您的用例这样的小字符串,其影响并不明显,并且可以达到预期目的。