Python 读取作为矩阵的文本文件

Python 读取作为矩阵的文本文件,python,matrix,cluster-computing,Python,Matrix,Cluster Computing,我有一个矩阵格式的文本文件,我想读这个文件,想创建一个树状图,但我有一个错误 这是我的文本文件的内容: Kaynak:YSK 阿达拉尔 伊斯坦布尔位置Adalar.svg d•t 托普兰·塞门·萨伊西托普兰·桑迪克·萨伊西 12369 45 阿达利克索努克拉 基斯。第二部分我是说我是奥拉尼 CHP Cumhuriyet Halk Partisi Atilla Aytac 5.207%50.1 AK Parti Adalet ve Kalkinma Parti Coskun Ozden 4.381

我有一个矩阵格式的文本文件,我想读这个文件,想创建一个树状图,但我有一个错误

这是我的文本文件的内容:

Kaynak:YSK

阿达拉尔

伊斯坦布尔位置Adalar.svg

d•t

托普兰·塞门·萨伊西托普兰·桑迪克·萨伊西

12369 45

阿达利克索努克拉

基斯。第二部分我是说我是奥拉尼

CHP Cumhuriyet Halk Partisi Atilla Aytac 5.207%50.1

AK Parti Adalet ve Kalkinma Parti Coskun Ozden 4.381%42.1%

错误代码:

colnames=行[0]。strip().split(“\t”)[1:] 索引器:列表索引超出范围


错误是因为第一行中没有制表符,并且该行根本没有被拆分。或者,如果第一个字符是制表符,则使用.strip()命令将其删除

您可以在显示特殊字符的同时打印该行,以检查是否存在制表符:

print repr(lines[0])

谢谢你,伙计,但是如果问题是我该怎么做才能解决呢?我对Pyton是个新手。很难说有什么比“不要假设不真实的事情”更具体的了。如果您真的要求每行包含一个选项卡,可以编辑输入文件,使其满足此要求。如果没有,你将不得不重新表述你的程序的逻辑来表达你真正的意思。
def readfile(filename):
  lines=[line for line in file(filename)]

  # First line is the column titles
  colnames=lines[0].strip().split("\t")[1:]
  rownames=[]
  data=[]
  for line in lines[1:]:
    p=line.split('\t')
    # First column in each row is the rowname
    rownames.append(p[0])
    # The data for this row is the remainder of the row
    data.append([float(x) for x in p[1:]])
  return rownames,colnames,data
print repr(lines[0])