Python re.findall在UTF-8失败,而脚本的其余部分成功

Python re.findall在UTF-8失败,而脚本的其余部分成功,python,regex,utf-8,Python,Regex,Utf 8,我有一个脚本,可以读取大量用瑞典语编写的文本文件(通常带有åäö字母)。如果我在d和dictionary[]上循环,它可以打印字典中的所有内容。但是,正则表达式(来自添加了u.*.的原始输入)无法正确返回utf-8 # -*- coding: utf8 -*- from os import listdir import re import codecs import sys print "Välkommen till SOU-sök!" search_word = raw_input("An

我有一个脚本,可以读取大量用瑞典语编写的文本文件(通常带有åäö字母)。如果我在
d
dictionary[]
上循环,它可以打印字典中的所有内容。但是,正则表达式(来自添加了
u.*.
的原始输入)无法正确返回utf-8

# -*- coding: utf8 -*-
from os import listdir 
import re
import codecs
import sys

print "Välkommen till SOU-sök!"
search_word = raw_input("Ange sökord: ")

dictionary = {}
for filename in listdir("20tal"):
    with open("20tal/" + filename) as currentfile:
        text = currentfile.read()
        dictionary[filename] = text

for d in dictionary:
    result = re.findall(search_word + u'.*', dictionary[d], re.UNICODE)
    if len(result) > 0:
        print "Filnament är:\n %s \noch sökresultatet är:\n %s" % (d, result)
编辑:输出如下:

如果我输入:

katt 
我得到以下输出:

Filnament är: Betänkande och förslag angående vissa ekonomiska spörsmål   berörande enskilda järnvägar - SOU 1929:2.txt 

och sökresultatet är: 

['katter, r\xc3\xa4ntor m. m.', 'katter m- m., men exklusive r \xc3\xa4 nor m.', 'kattemedel subventionerar', av totalkostnaderna, ofta \xe2\x80\x94 med eller utan', 'kattas den nuvarande bilparkens kapitalv\xc3\xa4rde till 500 milj. 
在这里,文件名
d
打印正确,但不是文件名取决于文件系统和操作系统的
re.findall
结果。您的特定正则表达式可能与规范化方法不匹配。因此,考虑这个解决方案:


我在这里遇到了一个类似的问题:

在Python
2.x
unicode列表项中,除非循环或连接它们,否则通常输出转义;也许可以试试这样的东西:

result = ', '.join(result)

if len(result) > 0:
    print ( u"Filnament är:\n %s \noch sökresultatet är:\n %s" % (d, result.decode('utf-8'))) 
输入

katt
katter, räntor m. m. katter m- m., men exklusive r ä nor m. kattemedel subventionerar av totalkostnaderna, ofta — med eller utan kattas den nuvarande bilparkens kapitalvärde till 500 milj
结果

katt
katter, räntor m. m. katter m- m., men exklusive r ä nor m. kattemedel subventionerar av totalkostnaderna, ofta — med eller utan kattas den nuvarande bilparkens kapitalvärde till 500 milj

返回utf-8时失败是什么意思。它是否抛出错误或只是找不到匹配项?您可以添加一个示例输入并显示您的输出吗?请将其编辑到您的问题中。注释的格式不适合这种情况。您是在谈论列表中的repr输出吗?是的,输出是
dictionary[d]
的值,这是正则表达式查看的地方。是的!成功了!输出现在像一个符咒一样打印出我的åäö。非常感谢你!(还有其他所有ofc的人。)