Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想清除以下字符串中\之后的任何内容";生产和非监督员工\r\n\n;_Python_Python 3.x - Fatal编程技术网

Python 我想清除以下字符串中\之后的任何内容";生产和非监督员工\r\n\n;

Python 我想清除以下字符串中\之后的任何内容";生产和非监督员工\r\n\n;,python,python-3.x,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('

我想去掉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
文件“”,第1行
df5[“缩写”]=df5[“缩写”].str.strip(“\”)
^
SyntaxError:扫描字符串文字时下线

字符串文字中不能只有一个
\
(或在末尾,或只有奇数的字符串)而不转义(因为它将转义结束引号),因此必须转义:

...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)

字符串文字中不能只有一个
\
(或在末尾,或只有奇数的字符串)而不转义(因为它将转义结束引号),因此必须转义:

...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)

正如Geek先生的回答中提到的,你必须避开反斜杠

如果要删除反斜杠后的任何内容,只需执行以下操作:

test_str = test_str.str.split('\\')[0] 
.split返回一个数组,因为我们只需要指向第一个反斜杠的内容,所以我们可以使用[0]获取第一个索引

在第一个反斜杠出现之前,这将使所有内容都处于上升状态。如果要包含反斜杠,只需将其附加在末尾:

test_str = test_str.str.split('\\')[0] + "\\"

正如Geek先生的回答中提到的,你必须避开反斜杠

如果要删除反斜杠后的任何内容,只需执行以下操作:

test_str = test_str.str.split('\\')[0] 
.split返回一个数组,因为我们只需要指向第一个反斜杠的内容,所以我们可以使用[0]获取第一个索引

在第一个反斜杠出现之前,这将使所有内容都处于上升状态。如果要包含反斜杠,只需将其附加在末尾:

test_str = test_str.str.split('\\')[0] + "\\"

您需要使用
for
循环进行迭代,以便去除每个字符。以下是一个例子:

string = "hit\n"
for i in ['\\n', '\\r']:  string = string.strip(i)

您需要使用
for
循环进行迭代,以便去除每个字符。以下是一个例子:

string = "hit\n"
for i in ['\\n', '\\r']:  string = string.strip(i)

正如MrGeek的回答中提到的,您需要添加两个斜杠来修复初始语法错误。要在找到反斜杠或特殊字符(如换行符)后删除所有内容,无论它是什么,我发现最简单的解决方案是:

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)
哪些产出:

In: Hello Stack 
Overflow!
Out: Hello Stack 
>>> 

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

如MrGeek的回答中所述,您需要添加两个斜杠来修复初始语法错误。要在找到反斜杠或特殊字符(如换行符)后删除所有内容,无论它是什么,我发现最简单的解决方案是:

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)
哪些产出:

In: Hello Stack 
Overflow!
Out: Hello Stack 
>>> 

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

在标题中提供的示例中,
\
后面的所有字符都是空白字符,所以为什么不使用
.str.strip()
不带任何参数?在标题中提供的示例中,
\
之后的所有字符都是空白字符,因此为什么不直接使用
.str.strip()
而不带任何参数?虽然这确实解决了语法错误,但并不能解决所述的实际问题(在反斜杠后去掉所有字符)@安德森:谢谢你的来信。现在是这样了。我的回答是+1,但值得注意的是,在特定的发布用例中(要删除的所有字符都是空白字符),仅使用
series.str.strip()
在大型数据集上的速度要快一点。虽然这确实解决了语法错误,但并不能解决所描述的实际问题(去掉反斜杠后的所有字符)@G.Anderson谢谢你的注释。现在是了。+1来自我,但值得注意的是,在特定的发布用例中(所有要删除的字符都是空白字符),只需使用
series.str.strip()
在大型数据集上的速度稍快一点。我的回答是+1,但请注意,这比MrGeek的lambda+apply()回答稍慢,比我的回答慢25%。str.strip()很好,我的回答是+1,但请注意,这比MrGeek的lambda+apply()回答稍慢一点回答,比仅
series.str.strip()慢25%