全天, 我有一个文本文件,是从地理信息系统(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()调用之前删除换行符?使用正则表达式?在
有什么想法? 泰,格伦
您可以尝试从整个文件中生成一个字符串,然后按“\r\n”将其拆分:
但请记住,对于大文件,这不是一个有效的方法。在
相关问题 更多 >
编程相关推荐