2012-04-25 19 views
-7

可能重复:
How to refer to “\” sign in python string我想从一个字符串在python删除“”

我在我已经删除其他所有字符相当大的字符串数据比包括AZ,az和0-9 我能够删除几乎每一个字符,但“\”是一个问题。

所有其他字符被删除,但“\”是使问题

def replace_all(text, dic): 
    for i, j in dic.iteritems(): 
     text = text.replace(i, j) 
    return text 

reps = {' ':'-','.':'-','"':'-',',':'-','/':'-', 
     '<':'-',';':'-',':':'-','*':'-','+':'-', 
     '=':'-','_':'-','?':'-','%':'-','!':'-', 
     '$':'-','(':'-',')':'-','\#':'-','[':'-', 
     ']':'-','\&':'-','@':'-','\W':'-','\t':'-'} 

x.name = x.name.lower() 

x1 = replace_all(x.name,reps) 
+7

您可能需要使用“\\”来转义字符串。 – birryree 2012-04-25 18:38:31

+0

我不能摆脱“\”字,我怎么能做到这一点使用上面的代码?谢谢你非常非常您的回复:) – 2012-04-25 18:43:44

+0

你是否知道,只允许A-Z,你并不排斥其他字母一些字母,如A?这真的是你想要做的吗? – 2012-04-25 19:09:21

回答

1

如果你有一个字符串:

a = 'hi how \\are you' 

您可以通过删除:

a.replace('\\','') 

>'hi how are you' 

如果你有,你有麻烦特定的情况下,我建议张贴多一点细节。

+0

非常感谢:) – 2012-04-25 18:56:13

+0

实际上,我正在使用'|'分隔属性的piratebay数据转储。我正在为它做一个索引器。在种子名称中,我只需要文本,没有符号或控制字 – 2012-04-25 19:03:03

+0

它看起来像你在正确的轨道上。转义\将允许您将其包含在您的字典中。你可以使用简短的lambda函数和正则表达式而不是一个大的字典来让代码更加优雅。 – valdarin 2012-04-25 19:06:27

1

birryee是正确的,你需要逃避与另一个反斜杠反斜杠。

+0

在这种情况下,岂不是更好投票这一职位,而不是增加另外一个答案? – Darthfett 2012-04-25 19:17:45

+0

@Darthfett:他没有把它作为答案。 – 2012-04-25 19:20:34

+0

@MarkByers谢谢,我不找为此道歉。 – Darthfett 2012-04-25 19:22:47

1

删除比包括AZ,az其他和0-9

而不是试图列出所有要删除字符(这将需要一个很长时间)中的所有字符,请使用正则表达式来指定那些你想字符保留:

import re 
text = re.sub('[^0-9A-Za-z]', '-', text) 
4

我有相当大的字符串数据,我已经删除比A-Z,A-Z和0-9

换句话说以外的所有角色,你想只保留这些字符。

string类已经提供了一个测试“是每一个字符是字母或数字?”,堪称.isalnum()。所以,我们可以只用filter那个:

>>> filter(str.isalnum, 'foo-bar\\baz42') 
'foobarbaz42' 
+0

这不起作用。 '滤波器(STR。isalnum,'foo-bar \\bazå42')'给出''foobarbaz \ xe542'' – 2012-04-25 18:45:26

+0

?不是字母数字? – kindall 2012-04-25 18:51:24

+0

是否有任何此功能需要的库? – 2012-04-25 18:51:53