2024-10-02 14:23:46 发布
网友
这可能是衡量你有多像Python。我只是在尝试学习python,所以我还没有达到python的水平。填充物是一个伪父系,我要一份父子的名单。在
填充:
haffi jolli dkkdk lkskkk lkslll sdkjl kljdsfl klsdlj sdklja asldjkl
代码:
问题是i + 1;我想在每一行打印出两个字符串。清楚了吗?在
i + 1
你可以在你的文件阅读和打印更python。试试这个:
def main(): with open('C:\Users\Notandi\Desktop\patriline.txt', 'r') as f: strings = f.readline().split('\t') for i, word in enumerate(strings): print "{} \t {}".format(word, strings[i+1:i+2]) main()
使用strings[i+1:i+2]可以确保在尝试到达列表末尾的第i+1索引时不会抛出IndexError(相反,返回一个[])。在
strings[i+1:i+2]
i+1
IndexError
[]
您正在混淆拆分字符串中的单词及其索引。例如,第一个单词是“haffi”,但第一个索引是0。在
要迭代索引及其对应的单词,请使用enumerate:
for i, word in enumerate(tmpstr): print word, tmpstr[i+1]
当然,这看起来很混乱。一个更好的方法是只迭代对字符串。有很多方法可以做到这一点;这里有一个。在
我将在这里使用with语句,如果使用的是旧版本的python,则需要导入该语句:
from __future__ import with_statement
对于实际的代码,如果您可以将整个文件加载到内存中两次(即,它非常小),我会这样做:
这样你就跳过了最后一行,因为没有太多的开销,以至于没有在末尾包含没有孩子的叶子,这就是你想要的吗在
有点切题:如果文件真的很大,您可能不想将整个文件加载到内存中,在这种情况下,您可能需要一个生成器。在这种情况下,如果你不需要打印的话,我需要的是如何简化文件的打印:
class reader_and_split(): def __init__(self, fname, delim='\t'): self.fname = fname self.delim = delim def __enter__(self): self.file = open(self.fname, 'r') return self.word_generator() def __exit__(self, type, value, traceback): self.file.close() def word_generator(self): current = [] while True: char = self.file.read(1) if char == self.delim: yield ''.join(current) current = [] elif not char: break else: current.append(char)
生成器的价值在于,在对其运行拆分之前,不需要将文件的全部内容加载到内存中,这对于非常非常大的文件来说可能很昂贵。为了简单起见,此实现只允许使用单字符分隔符。也就是说,要解析出所有内容,只需使用生成器,一种快速的肮脏方法是:
with reader_and_split(fileloc) as f: previous = f.next() for word in f: print "%s \t %s" % (previous, word) previous = word
你可以在你的文件阅读和打印更python。试试这个:
使用
strings[i+1:i+2]
可以确保在尝试到达列表末尾的第i+1
索引时不会抛出IndexError
(相反,返回一个[]
)。在您正在混淆拆分字符串中的单词及其索引。例如,第一个单词是“haffi”,但第一个索引是0。在
要迭代索引及其对应的单词,请使用enumerate:
当然,这看起来很混乱。一个更好的方法是只迭代对字符串。有很多方法可以做到这一点;这里有一个。在
^{pr2}$我将在这里使用with语句,如果使用的是旧版本的python,则需要导入该语句:
对于实际的代码,如果您可以将整个文件加载到内存中两次(即,它非常小),我会这样做:
^{pr2}$这样你就跳过了最后一行,因为没有太多的开销,以至于没有在末尾包含没有孩子的叶子,这就是你想要的吗在
有点切题:如果文件真的很大,您可能不想将整个文件加载到内存中,在这种情况下,您可能需要一个生成器。在这种情况下,如果你不需要打印的话,我需要的是如何简化文件的打印:
生成器的价值在于,在对其运行拆分之前,不需要将文件的全部内容加载到内存中,这对于非常非常大的文件来说可能很昂贵。为了简单起见,此实现只允许使用单字符分隔符。也就是说,要解析出所有内容,只需使用生成器,一种快速的肮脏方法是:
相关问题 更多 >
编程相关推荐