在Python中读取文本文件行(Windows)
我正在用Python做一个简单的导入程序,把一个文本文件转换成我们系统需要的json文件格式。
import json # Open text file for reading txtFile = open('Boating.Make.txt', 'r') # Create picklist obj picklistObj = dict() picklistObj['name'] = 'Boating.Make' picklistObj['items'] = list() i = 0 # Iterate through each make in text file for line in txtFile: picklistItemObj = dict() picklistItemObj['value'] = str(i) picklistItemObj['text'] = line.strip() picklistItemObj['selectable'] = True picklistObj['items'].append(picklistItemObj) i = i + 1 txtFile.close() picklistJson = json.dumps(picklistObj, indent=4) print picklistJson picklistFile = open('Boating.Make.json', 'w') picklistFile.write(picklistJson) picklistFile.close()
我想问的是,为什么我需要用到“strip”?我以为Python应该能自动识别我当前环境的换行符。难道我理解错了吗?
我需要说明的是,我读取的文本文件是一个ASCII文件,里面的文本行是用'\r\n'来分隔的。
4 个回答
0
你需要用strip()这个方法,因为“for line in file:”这个循环会把每行的换行符也保留在行里面。这个在文档里没有明确说明(至少在我看的2.71版本文档里没有)。不过,它的工作方式和file.readline()很像,后者是明确说明会保留换行符的。
1
可以查看这个链接。
Python 通常支持通用的换行符。使用 'U' 这个选项打开文件时,会把文件当作文本文件来处理。不过,文件中的行结束符可以是以下任意一种:Unix 系统用的换行符 '\n',Mac 系统用的换行符 '\r',或者 Windows 系统用的换行符 '\r\n'。
3
在用Python读取文本文件的每一行时,它会保留换行符。比如,当你读取一个文本文件时,
foo
bar
你会得到两个字符串:"foo\n"
和"bar\n"
。这里的\n
就是换行符。如果你不想要这些换行符,可以使用strip()
这个方法来去掉它们。
顺便说一下,我并不喜欢这种行为。