读取多元素列表,查找元素并在python中打印出来

时间:2011-06-18 22:55:11

标签: python latex split multiline lines

我正在编写一个python脚本来编写一个tex文件。但我必须使用另一个文件中的一些信息。这样的文件在我需要使用的每一行中都有菜单名称。我使用split来为我的“菜单”的每一行都有一个列表。 例如,我必须用我的列表中的每个第二个元素写一个部分,但是在运行之后,我得到了什么,我该怎么办?

这正是我正在做的事情:

    texfile = open(outputtex.tex', 'w')
    infile = open(txtfile.txt, 'r')
        for line in infile.readlines():
            linesplit = line.split('^')
            for i in range(1,len(infile.readlines())):
               texfile.write('\section{}\n'.format(linesplit[1])) 
               texfile.write('\\begin{figure*}[h!]\n')
               texfile.write('\centering\n')
               texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' %i)
               texfile.write('\end{figure*}\n')
               texfile.write('\\newpage\n')
    texfile.write('\end{document}')
    texfile.close()

顺便说一句,在inclugraphics行中,我不得不将pg_之后的数字从“0001”增加到“25050”。任何线索??

我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我不太关注你的问题。但是我在你的代码中看到了几个错误。最重要的是:

    for line in infile.readlines():
    ...
    ...
        for i in range(1,len(infile.readlines())):

一旦你读到一个文件,它就消失了。 (你可以把它拿回来,但在这种情况下没有意义。)这意味着对readlines的第二次调用没有任何结果,所以len(infile.readlines()) == 0。假设你在这里写的是你想要做的(即写file_len * (file_len - 1) + 1行?)那么你可能应该将文件保存到列表中。此外,你没有在你的文件名周围加上引号,你的缩进很奇怪。试试这个:

with open('txtfile.txt', 'r') as infile:    # (with automatically closes infile)
    in_lines = infile.readlines()
in_len = len(in_lines)

texfile = open('outputtex.tex', 'w')
for line in in_lines:
    linesplit = line.split('^')
    for i in range(1, in_len):
        texfile.write('\section{}\n'.format(linesplit[1])) 
        texfile.write('\\begin{figure*}[h!]\n')
        texfile.write('\centering\n')
        texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' %i)
        texfile.write('\end{figure*}\n')
        texfile.write('\\newpage\n')
texfile.write('\end{document}')
texfile.close()

也许你真的不想要嵌套循环?

infile = open('txtfile.txt', 'r')
texfile = open('outputtex.tex', 'w')
for line_number, line in enumerate(infile):
    linesplit = line.split('^')
    texfile.write('\section{{{0}}}\n'.format(linesplit[1])) 
    texfile.write('\\begin{figure*}[h!]\n')
    texfile.write('\centering\n')
    texfile.write('\includegraphics[scale=0.95]{pg_000%i.pdf}\n' % line_number)
    texfile.write('\end{figure*}\n')
    texfile.write('\\newpage\n')
texfile.write('\end{document}')
texfile.close()
infile.close()