Python 我的搜索失败是编码问题吗?

Python 我的搜索失败是编码问题吗?,python,python-3.x,encoding,decoding,Python,Python 3.x,Encoding,Decoding,我正在尝试从.txt文件中删除遵循某个模式的字符,但我的正则表达式搜索没有返回任何字符。与在命令提示下打印出来的字符相比,文本文件中有问题的字符看起来有所不同。我是新手,对编码和解码只有基本的了解 我相信txt文件是使用ANSI(Windows-1252)编码的,我使用的是python 3。我尝试过使用几个正则表达式模式进行搜索。每个正则表达式在RegExr中测试时都能工作,所以我认为这不是问题所在 txt文件是一个大容量提取器输出文件,如下所示: # BANNER FILE NOT PROVI

我正在尝试从.txt文件中删除遵循某个模式的字符,但我的正则表达式搜索没有返回任何字符。与在命令提示下打印出来的字符相比,文本文件中有问题的字符看起来有所不同。我是新手,对编码和解码只有基本的了解

我相信txt文件是使用ANSI(Windows-1252)编码的,我使用的是python 3。我尝试过使用几个正则表达式模式进行搜索。每个正则表达式在RegExr中测试时都能工作,所以我认为这不是问题所在

txt文件是一个大容量提取器输出文件,如下所示:

# BANNER FILE NOT PROVIDED (-b option)
# BULK_EXTRACTOR-Version: 1.5.5 ($Rev: 10844 $)
# Feature-Recorder: email
# Filename: W:\Migration\2010013\Working
# Feature-File-Version: 1.1
W:\Migration
2010013\Working/Succession planning/Succession Plan Article
W:\Migration\2010013\Working/Succession planning/Succession Plan Article▯-39612 j26@yahoo.com   397-1911 or</I> j26@yahoo.com</P> <P>\x0A<TABLE 
W:\Migration
2010013\Working/Succession planning/Succession Plan Article
W:\Migration\2010013\Working/Succession planning/Succession Plan Article▯-45963 jaime.brown@gmail.com   <a href="mailto:jaime.brown@gmail.com?subject=Ask The

with open("email.txt", 'r', encoding = 'cp1252') as file:
    all_lines = file.readlines()
    no_header = all_lines[5:]
print (no_header) #for testing

pattern = re.compile('/(ô[?]{2}o[-][0-9]*)')
for i in range(len(no_header)):
    test = re.search(pattern, no_header[i])
    print (test)
由于regex在RegExr中工作,我希望每行返回一个与模式匹配的字符串。相反,搜索对每一行都不返回任何值。我还尝试使用Unicode id U+25AF搜索矩形字符。那也没用

在翻译中似乎有些东西丢失了。我习惯于使用Python2.7,所以我猜我在这里缺少了一些编码/解码方面的东西


谢谢你的帮助!我们这样做是为了自动化元数据编写过程并保护个人的私人电子邮件地址。

警告,您有一个
/
,它是Ruby中的正则表达式分隔符,但不是Python中的分隔符

此外,您可以简单地使用
\S+
来匹配任何:

\ 匹配任何非空白字符;这相当于类[^\t\n\r\f\v]

下面是一个例子:

email = """# BANNER FILE NOT PROVIDED (-b option)
# BULK_EXTRACTOR-Version: 1.5.5 ($Rev: 10844 $)
# Feature-Recorder: email
# Filename: W:\Migration\2010013\Working
# Feature-File-Version: 1.1
W:\Migration
2010013\Working/Succession planning/Succession Plan Article
W:\Migration\2010013\Working/Succession planning/Succession Plan Article▯-39612 j26@yahoo.com   397-1911 or</I> j26@yahoo.com</P> <P>\x0A<TABLE 
W:\Migration
2010013\Working/Succession planning/Succession Plan Article
W:\Migration\2010013\Working/Succession planning/Succession Plan Article▯-45963 jaime.brown@gmail.com   <a href="mailto:jaime.brown@gmail.com?subject=Ask The"""

import re
print(re.findall('Article\S+', email))
# ['Article▯-39612', 'Article▯-45963']
print(re.findall('Article\S\-\d+', email))
# ['Article▯-39612', 'Article▯-45963']
email=“”#未提供横幅文件(-b选项)
#批量提取器版本:1.5.5($Rev:10844$)
#功能记录器:电子邮件
#文件名:W:\Migration\2010013\Working
#功能文件版本:1.1
W:\迁移
2010013\工作/继任计划/继任计划文章

W:\Migration\2010013\工作/继任计划/继任计划文章▯-39612j26@yahoo.com397-1911或j26@yahoo.com

\x0AIf如果您有一个cp1252中不存在的Unicode字符,那么编码几乎必须是UTF-8。(在这种情况下,ANSI是一个完全错误的名称,尽管它似乎很难摆脱。)您是说

re.sub(r'Article\u25af-\d+,“”)
不适用于您?此字符的UTF-8编码为
\xE2\x96\xAF
-您能否使用十六进制编辑器或类似工具检查这些是否是文件中的实际字节?另请参阅