需要在python中使用字符串索引的帮助吗
当我尝试使用索引获取行的最后一个元素时,它不起作用(打印出一个空行)。但是,当我打印原始行时,它可以工作需要在python中使用字符串索引的帮助吗,python,indexing,Python,Indexing,当我尝试使用索引获取行的最后一个元素时,它不起作用(打印出一个空行)。但是,当我打印原始行时,它可以工作 with open( newFile,"w") as f: f.write("Model Number One" + "\n") for l in lines: if "ATOM" in l : f.write(l[-1]) #Does NOT wor
with open( newFile,"w") as f:
f.write("Model Number One" + "\n")
for l in lines:
if "ATOM" in l :
f.write(l[-1]) #Does NOT work, prints empty line
f.write(l) # Prints the whole linem when I only want the last element of the line
原因可能是该行末尾有一个新行字符。如果行的最后一个元素是“\n”,因为文件有多行,那么它肯定会打印一个空行。正如Kengru提到的,末尾可能有一个新行。要测试,请尝试使用f.write(l[-2])而不是f.write(l[-1])。每一行都是一个字符串,因此每个索引都是单个字符,最后一个是换行符(
'\n'
)。如果要从该行中删除以空格分隔的子字符串,请使用strip
删除换行符,并使用split
在空格上拆分生成的字符串:
with open( newFile, "w") as f:
f.write("Model Number One" + "\n")
for l in lines:
elems = l.strip().split()
if "ATOM" in elems:
f.write(elems[-1] + "\n")
什么是
行
?这是字符串列表还是字符串列表?这是字符串列表!如果行
是字符串列表,则行
中的每个l
都是字符串,每个索引都是单个字符。要将其拆分为所需的以空格分隔的单词列表,split()
。我想可能是这样,所以我尝试了f.write[-2]、f.write[-3]等,但它打印了从0到9的数字。我知道这是错误的,因为最后一列从1开始到41结束。我想可能是这样,所以我尝试了f.write[-2],f.write[-3]等等,但它打印了从0到9的数字。我知道这是错误的,因为最后一列从1开始,到41结束。如果可能的话,复制粘贴您试图读取的文件的最后一行。