G'day all, 我有一个文本文件,它是从地理信息系统(GIS)应用程序(名称为版主)的注释字段中提取的。我需要解析这个文本并生成一个漂亮的报告。文本具有以回车/换行(x0D / x0A)终止的单独行。但是,某些行在文本正文中包含换行符。不确定这是怎么发生的。原因无关紧要。我只需要处理。我的文字看起来像这样(数据已更改,但基本想法相同) -
这是第01行 这是第02行 这是第03行 并且它包含03字符串后的换行符
这是第04行
我无法在这篇文章中正确表示文本文件,因为我的剪切和帖子正在剥离CR / LF,但每个“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行和第4行外,所有内容都打印正常。第3行将第3行打印到换行符。第4行打印第3行的剩余部分。程序然后继续,向行计数变量添加额外的行,当然,打印太多行。
那么......为什么Python在读取文本文件时会在换行符和carraige返回/换行组合中断? 有没有办法在发出readlines()调用之前删除换行符?使用正则表达式?
想法? ty,Glen
答案 0 :(得分:1)
您可以尝试从整个文件中创建一个字符串,然后将其拆分为' \ r \ n':
input_data = original_file.read().split('\r\n')
for line in input_data:
...
但请记住,它不适用于大文件。