1

我有一个包含此类文本的 .txt 文档:

[(“Vazhdo”,”verb”),(“të”,”particle”),(“ecësh”,”verb”),(“!”,”excl.”)]

(代表一个句子和每个单词的词性标签)

我想在python中有一个列表列表,如下所示:

[[(“Vazhdo”,”verb”),(“të”,”particle”),(“ecësh”,”verb”),(“!”,”excl.”)]]

但我得到这个:

['[(“Vazhdo”,”verb”),(“të”,”particle”),(“ecësh”,”verb”),(“!”,”excl.”)]\n']

我正在使用的代码是:

import io
f=io.open("test.txt", mode="r", encoding="utf-8-sig")
f_list = list(f)

我怎样才能避免 ['[ .... ]\n'] ?

谢谢!

4

3 回答 3

3

看起来你可以做到

import json
data = json.load(open('test.txt'))

这个答案是错误的对不起......[("word","QQ")]不是有效的json,因为json不支持元

相反,你应该能够做到

import ast
data = ast.literal_eval(io.open("test.txt", mode="r", encoding="utf-8-sig").read())

这是我的版本

import io,ast,requests

#text file available at
text_url = "https://gist.githubusercontent.com/joranbeasley/a50d940d9ac47e8458f027d3cc88e236/raw/3a65169d30e653e085284de16b1ee715f3596c95/example.txt"
with open("example.txt","wb") as f:
    # download and save textfile
    f.write(requests.get(text_url).content)

data = ast.literal_eval(io.open('example.txt',encoding='utf8').read())
print(data)
print(data[0])
print(data[0][0])

结果是

[('Vazhdo', 'verb'), ('të', 'particle'), ('ecësh', 'verb'), ('!', 'excl.')]
('Vazhdo', 'verb')
Vazhdo
于 2022-02-09T05:33:28.203 回答
1

io.open()将文件作为字符串列表读取,因此您需要查看文件eval的每一行.txt以获取列表列表而不是字符串列表。

以下是您可以如何做到这一点:

temp = ['[("Vazhdo","verb"),("të","particle"),("ecësh","verb"),("!","excl.")]\n']
f_list = []
for i in temp:
  f_list.append(eval(i.strip()))

print(f_list)

#[[('Vazhdo', 'verb'), ('të', 'particle'), ('ecësh', 'verb'), ('!', 'excl.')]]


#OR

f_list = [eval(lst.strip()) for lst in f_list]
于 2022-02-09T05:45:13.630 回答
0

您可以使用 strip 方法删除空白行,例如:

f_list[0] = f_list[0].rstrip()
于 2022-02-09T05:41:01.090 回答