我有一个脚本,它可以读取大量的瑞典语文本文件(通常带有字母)。如果我循环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)
编辑:输出如下:
如果我输入:
^{pr2}$我得到以下输出:
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列表项通常是转义的,除非您遍历每个列表项或将它们连接起来;可以尝试如下操作:输入:
^{pr2}$结果:
文件名normalized的方式依赖于文件系统和操作系统。您的特定正则表达式可能与规范化方法不正确匹配。因此,可以通过remram来考虑这个解决方案:
我在这里遇到了一个类似的问题:Filesystem independent way of using glob.glob and regular expressions with unicode filenames in Python
相关问题 更多 >
编程相关推荐