Python正则表达式和编码

时间:2015-12-01 22:36:09

标签: python utf-8

我正在尝试查找并打印此文件中的所有电话号码。但该文件有很多不可读的文本。 该文件看起来像这样,但后来真的很大: ë

如何解码并找到所有数字?我现在有以下代码:

import glob
import re

path = "C:\\Users\\Joey\\Downloads\\db_sdcard\\mysql\\ibdata1"
files= glob.glob(path)
for name in files:
        with open(name, 'r') as f:
            for line in f:
                print line
                match = re.search(r'(/b/d{2}-/d{8}/b)', line)
                if match:
                    found = match.group()
                    print found

当我运行我的脚本时,我得到以下输出:

ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

我必须在哪里放.decode('utf8')并且我的代码是否为其他好处?

1 个答案:

答案 0 :(得分:2)

尝试使用以下内容查找您的号码:

xx-xxxxxxxx

它会创建一个符合格式x的所有匹配子字符串的列表,其中>>> line = ' P t\xe2\x82\xac \xc5\x92 \xc3\x98p\xe2\x82\xac Q~\xc3\x80t\xc3\xb406-23423230xx06-34893646xx secure_encryptedsecure_encrypted\xe2\x82\xac -\xe2\x82\xac -\xe2\x82\xac \n' >>> re.findall("\d{2}-\d{8}", line) ['06-23423230', '06-34893646'] 是一个数字。

当使用问题的最后一行作为例子时:

for name in files:
    with open(name, 'r') as f:
        for line in f:
            matches = re.findall("\d{2}-\d{8}", line)
            for mt in matches:
                print mt

这是完整的陈述:

print

这将findall每个匹配在不同的行上。

您甚至可以同时for name in files: with open(name, 'r') as f: matches = re.findall("\d{2}-\d{8}", f.read()) for mt in matches: print mt 整个文件中的匹配项:

        Camera.getPicture({
            quality: 75,
            targetWidth: 320,
            targetHeight: 320,
            sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
            destinationType: navigator.camera.DestinationType.FILE_URI,
            saveToPhotoAlbum: false
        }).then(function (imageURI) {

            var the_file = new Blob([imageURI], { type: 'image/jpeg' });

            $scope.srcImage = imageURI;
            $scope.upload(the_file);
        }, function (err) {
            console.err(err);
        });



    };

$scope.upload = function (file) {
            alert(file);
            BubbleFactory.UploadImage($scope.bubbleId, file).then(function (resp) {
                console.log(resp + $scope.bubbleId);
                $scope.post.Text = resp;
                $scope.PostMessage($scope.post);
                //console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data);
            }, function (resp) {
                console.log('Error status: ' + resp.status);
            }, function (evt) {
            });
        };