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])