我有一个看起来像这样的表(注意,这是一个小节,这里有40多个字段)
我想问问有没有一种方法可以用Python读取并存储为列表列表?
[[804,01000001,jj,01asdas],[804,0100002,hh,1-NetSassassdasdsds]]
答案 0 :(得分:1)
您可以顺序分析该行,将带有短划线的行扔掉,分割文件,然后将其附加到列表中
data = []
with open(file) as f:
for line in f:
if '-' not in line:
data.append(line.split('|')[1:-1])
在以下示例中进行了测试
----------------------
|id|f1 |f2 |f3 |
----------------------
|12|01001|jj|01|
|12|01001|jj|01|
打印以下输出
[['id', 'f1 ', 'f2 ', 'f3 '],
['12', '01001', 'jj', '01'],
['12', '01001', 'jj', '01']]
答案 1 :(得分:0)
您可以丢弃前三行标题行,剥离最外面的|
,然后以|
作为分隔符来分隔行,最后剥离空白。
使用列表推导,假设您的表文本存储在data
中:
arr = [(f for f in l.strip('|').split('|')) for i, l in enumerate(data.split('\n')) if i > 2]
答案 2 :(得分:0)
基于评论:
import pandas as pd
arr = pd.read_csv('path_to_txt_file.txt', sep='|').values.tolist()
经过以下文本文件测试:
h1|h2|h3
abc|foo|bar
abc2|foo2|bar2
输出
>>> pd.read_csv('random.txt', sep='|').values.tolist()
[['abc', 'foo', 'bar'], ['abc2', 'foo2', 'bar2']]
答案 3 :(得分:0)
这是我遵循的步骤- 1.从文本文件中读取行。 2.用pipe(“ |”)分割每一行,然后仅提取具有任何字母数字字符的那些元素。 3.最后,从列表列表中删除空白列表(省去第一行和第三行)。
这是代码-
lines = open("test.txt","r").readlines()
l = []
for line in lines :
temp = line.split("|")
l = l + [[x.strip() for x in temp if re.match('^[\w-]+$', x.strip()) is not None]]
finalList = [x for x in l if x != []]
finalList应该会给您想要的答案。