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