TDN*_*DNS 209 python readline python-2.7
我有一个包含值的.txt文件.
值如下所示:
Value1
Value2
Value3
Value4
Run Code Online (Sandbox Code Playgroud)
我的目标是将值放在列表中.当我这样做时,列表看起来像这样:
['Value1\n', 'Value2\n', ...]
该\n是没有必要的.
这是我的代码:
t = open('filename.txt', 'r+w')
contents = t.readline()
alist = []
for i in contents:
alist.append(i)
Run Code Online (Sandbox Code Playgroud)
小智 271
这应该做你想要的(列表中的文件内容,按行,没有\n)
with open(filename) as f:
mylist = f.read().splitlines()
Run Code Online (Sandbox Code Playgroud)
hug*_*own 113
我这样做:
alist = [line.rstrip() for line in open('filename.txt')]
Run Code Online (Sandbox Code Playgroud)
要么:
with open('filename.txt') as f:
alist = [line.rstrip() for line in f]
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 91
您可以使用.rstrip('\n')到只能从字符串的结尾去掉换行符:
for i in contents:
alist.append(i.rstrip('\n'))
Run Code Online (Sandbox Code Playgroud)
这使得所有其他空白完好无损.如果你不关心线的起点和终点处的空格,那就叫大重锤.strip().
但是,因为你是从文件中读取,并拉一切到内存无论如何,最好使用str.splitlines()方法 ; 这会在行分隔符上拆分一个字符串,并返回没有这些分隔符的行列表; 在file.read()结果上使用它,根本不使用file.readlines():
alist = t.read().splitlines()
Run Code Online (Sandbox Code Playgroud)
ask*_*han 11
对于列表中的每个字符串,使用.strip()从字符串的开头或结尾删除空格:
for i in contents:
alist.append(i.strip())
Run Code Online (Sandbox Code Playgroud)
但是根据您的使用情况,您可能最好使用类似的东西,numpy.loadtxt或者即使numpy.genfromtxt您需要从文件中读取的数据库.
Lis*_*sle 11
打开文件后,列表推导可以在一行中完成:
fh=open('filename')
newlist = [line.rstrip() for line in fh.readlines()]
fh.close()
Run Code Online (Sandbox Code Playgroud)
请记住之后关闭您的文件.
from string import rstrip
with open('bvc.txt') as f:
alist = map(rstrip, f)
Run Code Online (Sandbox Code Playgroud)
诺塔Bene的:rstrip()去掉空格,即:\f, \n,\r,\t,\v,\x和空白 ,
but I suppose you're only interested to keep the significant characters in the lines. Then, mere map(strip, f)更适合,删除标题空白.
如果您真的想要仅消除NL \n和RF \r符号,请执行以下操作:
with open('bvc.txt') as f:
alist = f.read().splitlines()
Run Code Online (Sandbox Code Playgroud)
没有参数传递的splitlines()不保留NL和RF符号(Windows在行的末尾记录NLRF的文件,至少在我的机器上),但保留其他空格,特别是空格和制表符.
.
with open('bvc.txt') as f:
alist = f.read().splitlines(True)
Run Code Online (Sandbox Code Playgroud)
具有相同的效果
with open('bvc.txt') as f:
alist = f.readlines()
Run Code Online (Sandbox Code Playgroud)
也就是说保留了NL和RF
我遇到了同样的问题,我发现以下解决方案非常有效。我希望它能帮助你或其他想做同样事情的人。
首先,我会从“with”语句开始,因为它确保正确打开/关闭文件。
它应该是这样的:
with open("filename.txt", "r+") as f:
contents = [x.strip() for x in f.readlines()]
Run Code Online (Sandbox Code Playgroud)
如果要将这些字符串(内容列表中的每个项目都是字符串)转换为整数或浮点数,您可以执行以下操作:
contents = [float(contents[i]) for i in range(len(contents))]
Run Code Online (Sandbox Code Playgroud)
如果要转换为整数,请使用int代替float。
这是我在 SO 中的第一个答案,如果格式不正确,请见谅。
我使用了剥离功能来消除换行符,因为分割行在4 GB的文件上引发了内存错误。
样例代码:
with open('C:\\aapl.csv','r') as apple:
for apps in apple.readlines():
print(apps.strip())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
282337 次 |
| 最近记录: |