Python 2.7文本文件的输出没有最后一个空白行

时间:2015-09-03 21:59:32

标签: python

我已经开始学习Python而且我坚持了一项任务 - 我有10个文本文件,我试图从它们写两个输出: 输出1应该是这样的 文件夹和文件头的名称 文件夹和文件头的名称 ...

输出2应该是这样的 文件夹和文件名|文字|文字|文本 文件夹和文件名|文字|文字|文本 ...

虽然我查看了许多问题,但我没有找到,如何删除(或不写)最后一行空白 - 应该始终只有文本。 我尝试过的所有解决方案(tell(),rstrip(),...)都删除了所有新行的符号,所以我的文件就像 文件夹和文件头文件夹的名称以及文件头的名称。 不幸的是因为任务定义我只允许使用glob和re,所以对我来说禁止使用有用的sys:(

我真的很感谢你的帮助,这项任务对我来说真的很有挑战性,但现在我不知道如何继续:)

感谢您的任何建议并度过愉快的一天;)

我正在使用的代码:

    import re, glob
    file_list = glob.glob('./input/*txt')
    for file_name in file_list:
    input_file = open(file_name, 'r')
    output_1 = open('file_1', 'a')
    output_2 = open('file_2', 'a')
    for line in input_file:
    if re.search(r'\s{2,}\S{4,}\s{1}\S+:.*', line):
                    output_2.write(file_name.replace('.txt','|') + line)
            if re.search(r'\s{3,}\S{3,16}\s+X?\s[A-Z]{3,4}\d?\s+\d{1,3}.*', line):
                    field = re.findall('\S{3,16}\s{3,}', line) + re.findall('\s{2}\d{1,3}.*', line)
                    field_join = '|'.join(field)
                    field_clear = re.sub(r'(\s){2,}', '', field_join)
                    field_list = re.sub(' ', '|', field_clear, 1)
                    output_1.write(file_name.replace('.txt','|') + field_list + '\n')
    output_2.close()
    output_1.close()
    input_file.close()

1 个答案:

答案 0 :(得分:1)

在循环开始时只有continue(如果它是一个空行,则立即转到下一个循环迭代而不执行任何代码):

for line in input_file:
    if not line.strip():
        continue
    # etc

编辑:只有最后一行如果它是空白的:

input_file = input_file.readlines()
last_iter = len(input_file) - 1
for idx, line in enumerate(input_file):
    if idx == last_iter and not line.strip():
        break

或在循环之前:

input_file = input_file.readlines()
if not input_file[-1].strip():
    input_file = input_file[:-1]