Python 3.x 从由制表符分隔的字符串创建列表

Python 3.x 从由制表符分隔的字符串创建列表,python-3.x,Python 3.x,我想从保存在文件中的以下字符串创建列表: neurovaultcols_050817 1073 neurovaultcols_050817 1606 代码如下: repo_dataset=open("G:\\My Drive\\single.txt") k=[] for x in repo_dataset: x.strip().strip("").split("\t") k.append(x) for b in k: prin

我想从保存在文件中的以下字符串创建列表:

neurovaultcols_050817   1073
neurovaultcols_050817   1606
代码如下:

repo_dataset=open("G:\\My Drive\\single.txt")
k=[]
for x in repo_dataset:           
    x.strip().strip("").split("\t")       
    k.append(x)
for b in k:
    print(b[0])
现在,当我使用
print(b[0])
时,我希望看到“aneurovaultcols_050817”。当我使用print(b[1])时,我想看到1073和1606。 但我只看到第一个字母:

n
n
我做错了什么?

更改为:

with open("G:\\My Drive\\single.txt", 'r') as f:
    k = [line.strip().split('\t') for line in f]

for b in k:
    print (b[0], b[1])
问题在于:

for x in repo_dataset:           
    x.strip().strip("").split("\t")       
    k.append(x)
基本上,这是说“对于打开的文件(
repo_数据集
)中的行(
x
),在选项卡上剥离并拆分行”。它返回一个列表,但是您不捕获它,然后将整行追加到
k
。如果我们将其分解:

for x in repo_dataset:
    # lets say 'x' is currently 'neurovaultcols_050817   1073'       
    x.strip().strip("").split("\t")
    # 'neurovaultcols_050817   1073'.strip() removes leading & trailing characters
    # 'neurovaultcols_050817   1073'.strip("") is not necessary
    # 'neurovaultcols_050817   1073'.split('\t') returns ['neurovaultcols_050817', '1073']
    #    but you don't store the list that gets returned so it does nothing essentially
    k.append(x)
    # k.append('neurovaultcols_050817   1073') is what happens
然后,这就是
k
的样子:

k = ['neurovaultcols_050817   1073', 'neurovaultcols_050817   1606']
因此的
循环将
'neurovaultcols_050817 1073'
作为第一个
b
。因此,对
b[0]
的调用表示字符串开头的
'n'

对发布的原始代码的更改非常简单(尽管我建议使用我的代码):


谢谢,@pstatix所以我只需要在“r”模式下打开它?@nina_dev我已经用详细的解释更新了这篇文章
repo_dataset=open("G:\\My Drive\\single.txt")
k=[]
for x in repo_dataset:           
    y = x.strip().split("\t") # change    
    k.append(y) # change
for b in k:
    print(b[0])