2017-04-22 76 views
2

所以我必须开始\u其次是各种形式的4个字符的十六进制串的发生(他们不是Unicode对象,但在数据实际字符串,这就是为什么我想清理数据),并希望用空白替换那些事件。正则表达式表达了一个特定的模式

示例文本文件:Hello \u2022 Created, reviewed, \u00e9executed and maintained

对于如:会有串\u2022\u00e9的出现,我想找到\u,并用4个字符子202200e9跟在后面的是一起拔出。我正在寻找适合此模式的正确表达式。

示例代码:

import json 
import io 
import re 

files = glob('Candidate Profile Data/*') 

for file_ in files: 
    with io.open(file_, 'r', encoding='us-ascii') as json_file: 
     json_data = json_file.read().decode() 
     json_data = re.sub('[^\x00-\x7F]+',' ',json_data) 
     json_data = json_data.replace('\\n',' ') 
     json_data = re.sub(r'\\u[0-9a-f]{,4}',' ',json_data) 

     print json_data 
     json_data = json.loads(json_data) 
     print(json_data) 
+0

如果我得到它的权利,你需要从字符串中删除Unicode字符? –

+0

@LeonardoChirivì不,这就是为什么我明确提到它们不是实际的unicode字符,而是以数据本身的字符串形式。 –

回答

2

真的,我们需要你的代码的例子,但作为一个指针,正则表达式我想你会需要的是像r'\\u[0-9a-f]{,4}'

下面是一个例子它使用:

>>> import re 
>>> my_string='Hello \\u2022 Created, reviewed, \\u00e9executed and maintained' 
>>> my_string 
'Hello \\u2022 Created, reviewed, \\u00e9executed and maintained' 
>>> re.sub(r'\\u[0-9a-f]{,4}',"",my_string) 
'Hello Created, reviewed, executed and maintained' 

仍希望看到你的代码的例子,使我们能够提供更准确的答案

+0

它没有工作,加上我添加了一个示例数据。 –

+0

是的,它添加了前面的'r'后认为它不是必需的。我只是添加了一个我想要做的事情的示例代码。如果您可以将我的代码合并到一个正则表达式中,我将非常感激。 –