我正在尝试从具有由ASCII值215分隔的单词对的文件中读取。当我运行以下代码时:
f = open('file.i', 'r')
for line in f.read().split('×'):
print line
我得到一个看起来像垃圾的字符串。以下是我输入的示例:
abashedness×N
abashment×N
abash×t
abasia×N
abasic×A
abasing×t
Abas×N
abatable×A
abatage×N
abated×V
abatement×N
abater×N
Abate×N
abate×Vti
abating×V
abatis×N
abatjours×p
abatjour×N
abator×N
abattage×N
abattoir×N
abaxial×A
以上是运行上面代码后的输出:
z?Nlner?N?NANus?A?hion?hk?hhn?he?hanoconiosis?N
我的目标是最终将其读入元组列表或其他类似的内容,但我无法将数据打印出来。
感谢您的帮助。
答案 0 :(得分:0)
嗯,有两件事:
with open("file.i", "rb") as f:
for line in f.read().split(b"\xd7"):
print(line)
答案 1 :(得分:0)
角色正在界定单词和词性,但每个单词仍然是单独的:
with open('file.i', 'rb') as handle:
for line in handle:
word, pos = line.strip().split('×')
print word, pos
您的代码正在拆分整个文件,因此您最终会使用N\nabatable
,N\nAbate
,Vti\nabating
等字词。
答案 2 :(得分:0)
感谢您的帮助,我能够将这些代码组合在一起,返回一个包含我正在寻找的列表的列表。
with open("mobyposi.i", "rb") as f:
content = f.readlines()
f.close()
content = content[0].split()
for item in content:
item.split("\xd7")
确实是unicode!但是,上述实现丢弃了unicode值之后和换行符之前的文本。
编辑:能够减少到:
with open("mobyposi.i", "rb") as f:
for item in f.read().split():
item.split("\xd7")
答案 3 :(得分:0)
要将文件中的字节解释为文本,您需要知道其字符编码。 There Ain't No Such Thing As Plain Text。您可以使用codecs
模块来阅读文本:
import codecs
with codecs.open('file.i', 'r', encoding='utf-8') as file:
for line in file:
word, sep, suffix = line.partition(u'\u00d7')
if sep:
print word
放置文件的实际字符编码,而不是utf-8
占位符,例如cp1252
。
字符串文字中的非ascii字符需要脚本顶部的源字符编码声明,因此我使用了unicode转义:u'\u00d7'
。