在Python中读取文本文件行(Windows)

4 投票
4 回答
15395 浏览
提问于 2025-04-16 18:54

我正在用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()这个方法来去掉它们。

顺便说一下,我并不喜欢这种行为。

撰写回答