我想摆脱以下字符串“生产和非监督员工\ r \ n \ n \ n”中\后面的所有内容

时间:2019-08-29 21:08:22

标签: python python-3.x

我想摆脱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

4 个答案:

答案 0 :(得分:4)

在不忽略转义的情况下,字符串文字中不能只包含一个\(或末尾,或者只有奇数个字符串)(因为它将转义右引号),因此您必须将其转义:

...str.strip('\\')

要在反斜杠后删除所有内容,可以使用applysplit

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)

这似乎不是的最有效方法,但是对于像您的用例这样的小字符串,其影响并不明显,并且可以达到预期目的。