我需要从包含多行的文件中加载文本到二维列表,该文件包含多行,每行包含用逗号分隔的字母。运行此命令时,我得到一个二维列表,但是嵌套列表包含单个字符串而不是单独的值,并且无法对其进行迭代。我该如何解决?
def read_matrix_file(filename):
matrix = []
with open(filename, 'r') as matrix_letters:
for line in matrix_letters:
line = line.split()
matrix.append(line)
return matrix
结果:
[['a,p,p,l,e'], ['a,g,o,d,o'], ['n,n,e,r,t'], ['g,a,T,A,C'], ['m,i,c,s,r'], ['P,o,P,o,P']]
我需要嵌套列表中的每个字母都为单个字符串,这样我才能使用它们。
预先感谢
答案 0 :(得分:1)
split()
函数默认在空白处分割。您可以通过传递要分割的字符串来解决此问题。在这种情况下,这将是一个逗号。下面的代码应该可以工作。
def read_matrix_file(filename):
matrix = []
with open(filename, 'r') as matrix_letters:
for line in matrix_letters:
line = line.split(',')
matrix.append(line)
return matrix
答案 1 :(得分:1)
您描述的输入格式符合CSV格式。 Python具有a library,仅用于读取CSV文件。如果您只是想完成工作,则可以使用此库为您完成工作。这是一个示例:
输入(test.csv):
a,string,here
more,strings,here
代码:
>>> import csv
>>> lines = []
>>> with open('test.csv') as file:
... reader = csv.reader(file)
... for row in reader:
... lines.append(row)
...
>>>
输出:
>>> lines
[['a', 'string', 'here'], ['more', 'strings', 'here']]
答案 2 :(得分:1)
使用strip()函数也将摆脱换行符:
import requests
from lxml.html import fromstring
res = requests.get("https://www.sec.gov/Archives/edgar/data/1085596/000146970918000185/0001469709-18-000185-index.htm")
root = fromstring(res.text)
for item in root.xpath('//table[contains(@summary,"Document")]//tr[td[starts-with(., "EX-")]]/td/a[contains(@href, ".htm")]/@href'):
print(item)
/Archives/edgar/data/1085596/000146970918000185/ex31_1apg.htm
/Archives/edgar/data/1085596/000146970918000185/ex31_2apg.htm
/Archives/edgar/data/1085596/000146970918000185/ex32_1apg.htm
/Archives/edgar/data/1085596/000146970918000185/ex32_2apg.htm