2013-01-21 95 views
1

我想从我的琴弦与"\"开始删除的文字,如:应用re.sub贪婪字符

\xf, \africa\87, \ckat\x70, ... 

是否有re.sub这样用贪婪字符的方式?

例如为:

line = re.sub("[\.*]", "", line) 

谢谢!

编辑: 输入例如:

" lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum" 

输出:

" lorem ipsum lorem ipsum" 
+1

你应该可能会添加一个输入和输出示例。 –

+1

'\ xe2'确实是'\ xe2',还是它是指ASCII码为0xe2的字符? – nhahtdh

+0

我相信这意味着ASCII码为0xe2的字符,但在我的文本中显示为\ xe2 – Julia

回答

3

如果我正确理解你的问题,你想删除所有非ASCII从你的句子前缀词

您可以轻松地做到这一点通过single pass LCordinal matchfilter不使用regex

>>> data = " lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum" 
>>> ' '.join(e for e in data.split() if 31 < ord(e[0]) < 127) 
'lorem ipsum lorem ipsum' 
+0

我猜'31

+0

@AshwiniChaudhary:谢谢...采取的点数 – Abhijit

1

的表达式匹配是:

[\b\\][\w]+,? 

而使用Lorem存有上述表达式的你的输入文本只匹配你想删除的内部词:)

example rubular

我增加了一些其他的正则表达式匹配,里面的字符串和\

[\b\\][\w.,]* 

another example

+0

使用line = re.sub(“[\ b^\\] [\ w] + ,?”,“”,line)实际上除了以“\”开头的字符串之外的其他所有内容都会被删除......我不确定我是否做错了什么? – Julia

+0

对不起,只是修改 –

+0

似乎并不适用于我,同样的问题再次,它只保留字符串以\开头,并删除所有其他 – Julia

1
regex = re.compile(r""" 
        \\\S+\s* 
        """, re.VERBOSE) 
line = r" lorem ipsum \xe2\x80\x9csianhill7 lorem ipsum" 
replaced = regex.sub("", line) 

请注意,您需要后使用* 0以上告诉Python将'\'视为普通字符而不是转义字符。这是通过在字符串前添加r来完成的。

我还假设你想删除所有以'\'开头并包含下一个空白字符的文本。

+0

谢谢,虽然我不能真正在字符串前添加“r”,因为我导入它打开('... .csv') – Julia

+0

如果您直接从文件中读取,则不需要'r'。只有在您想要测试隔离示例上的代码时才需要它。 –