文本fi中的Python EOL问题

2024-04-26 11:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

全天, 我有一个文本文件,是从地理信息系统(GIS)应用程序的注释字段中提取出来的(名字被保留)。我需要分析这段文字并写出一份漂亮的报告。文本包含以回车符/换行符(x0D/x0A)结尾的各行。但是,有些行在正文中包含一个换行符。不知道这是怎么发生的。原因无关紧要。我只是需要处理。我的文本是这样的(数据改变了,但基本思想是一样的)—

this is line 01
this is line 02
this is line 03
and it contains a newline after the 03 character string
this is line 04

我不能在这篇文章中正确地表示文本文件,因为我的剪切和post正在剥离CR/LFs,但是在每个“行0”后面都有CR/LF字符串。这个发布机制不允许附加文件,否则我会附加这个短文本文件。 我需要把每一行读到CR/LF并打印出来。 第1行和第2行打印正常。 第3行打印到前03行。 所以当我读到以下片段时-

import sys
import os

if __name__ == '__main__':

    if sys.version_info >= (3, 0):
        print ("script: EOL_Python_test.py");
        print ("Python version:  " + str(sys.version_info));
        # vars
        input_file = r"EOL_test_file.txt";
        input_data_line = "";
        line_number = 0;
        output_line = "";
        # end vars def

        if os.path.isfile(input_file):
            output_line = "processing file:  " + input_file + "\n";
            print (output_line);
            original_file = open(input_file)
            input_data_line = original_file.readline().strip("\r\n")
            while input_data_line != "":
                line_number = line_number + 1;
                output_line = "line #:" + str(line_number) + "  " + \
                    str(input_data_line);
            print (output_line)
            input_data_line = original_file.readline().strip("\r\n")
            # regex for replacing EOL with newline? "\r\n?|\n"
            original_file.close();
    else:
        print ("must run on Python 3+, now exiting...");
        exit;

除了第三行和第四行以外,其他的都可以打印。第3行将第3行打印到换行符。第4行打印第3行的剩余部分。然后程序继续,在line count变量中添加一行,当然,打印的行太多了。在

所以。。。当读取文本文件时,为什么Python在newline和carraige return/newline组合中都中断? 有没有办法在发出readlines()调用之前删除换行符?使用正则表达式?在

有什么想法? 泰,格伦


Tags: numberinputoutputdataifissysline
1条回答
网友
1楼 · 发布于 2024-04-26 11:55:57

您可以尝试从整个文件中生成一个字符串,然后按“\r\n”将其拆分:

input_data = original_file.read().split('\r\n')
for line in input_data:
    ...

但请记住,对于大文件,这不是一个有效的方法。在

相关问题 更多 >