摆脱\ n使用.readlines()
我有一个.txt文件的值。
值如下所示:
Value1 Value2 Value3 Value4 我的目标是把值放在一个列表中。 当我这样做时,列表如下所示:
 ['Value1\n', 'Value2\n', ...] 
  \n是不需要的。 
这是我的代码:
 t = open('filename.txt', 'r+w') contents = t.readline() alist = [] for i in contents: alist.append(i) 
	
这应该做你想做的(列表中的文件内容,按行,没有\ n)
 with open(filename) as f: mylist = f.read().splitlines() 
我会这样做:
 alist = [line.rstrip() for line in open('filename.txt')] 
要么:
 with open('filename.txt') as f: alist = [line.rstrip() for line in f] 
 您可以使用.rstrip('\n') 只从string的末尾删除换行符: 
 for i in contents: alist.append(i.rstrip('\n')) 
 这使所有其他空白完好无损。 如果你不关心线条开始和结尾的空白,那么大的重锤被称为.strip() 。 
 但是,由于您正在从文件中读取数据并将所有内容都拉到内存中,所以最好使用str.splitlines()方法 ; 这将拆分行分隔符上的一个string,并返回没有这些分隔符的行列表; 在file.read()结果上使用它,并且完全不使用file.readlines() : 
 alist = t.read().splitlines() 
 对于列表中的每个string,使用.strip()从string的开头或结尾删除空格: 
 for i in contents: alist.append(i.strip()) 
 但是根据你的用例,如果你需要从文件中读取的数据的一个好arrays,你可能会更好使用像numpy.loadtxt甚至numpy.genfromtxt 。 
 from string import rstrip with open('bvc.txt') as f: alist = map(rstrip, f) 
  Nota Bene: rstrip()删除空格,也就是说: \f , \n , \r , \t , \v , \x并且空白   , 
 但是我想你只是想把重要的人物留在线上。 然后,仅仅map(strip, f)会更好地适应,也就是去除标题空格。 
 如果你真的只想消除NL \n和RF \r符号,做: 
 with open('bvc.txt') as f: alist = f.read().splitlines() 
没有parameter passing的splitlines()并不保留NL和RF符号(Windows在行尾logging文件,至less在我的机器上是NLRF),但保留其他空格,尤其是空格和制表符。
。
 with open('bvc.txt') as f: alist = f.read().splitlines(True) 
有同样的效果
 with open('bvc.txt') as f: alist = f.readlines() 
也就是说NL和RF都保持不变
我有同样的问题,我发现以下解决scheme是非常有效的。 我希望这会帮助你或者其他想要做同样事情的人。
首先,我将从“with”语句开始,因为它确保文件的正确打开/closures。
它应该看起来像这样:
 with open("filename.txt", "r+") as f: contents = [x.strip() for x in f.readlines()] 
如果要以整数或浮点forms转换这些string(内容列表中的每个项目都是string),则可以执行以下操作:
 contents = [float(contents[i]) for i in range(len(contents))] 
 如果要转换为整数,请使用int而不是float 。 
这是我的第一个答案,非常抱歉,如果它没有正确的格式。
我最近用它来读取文件中的所有行:
 alist = open('maze.txt').read().split() 
或者你可以使用这一点额外的安全性:
 with f as open('maze.txt'): alist = f.read().split() 
 它不适用于单行中的文本之间的空格,但看起来好像您的示例文件可能没有空格分隔值。 这是一个简单的解决scheme,它返回一个精确的值列表,并且不会为每个空行添加一个空string: '' ,如文件末尾的换行符。 
在打开文件之后,列表理解可以在一行中完成:
 fh=open('filename') newlist = [line.rstrip() for line in fh.readlines()] fh.close() 
只记得在之后closures你的文件。
 with open('D:\\file.txt', 'r') as f1: lines = f1.readlines() lines = [s[:-1] for s in lines] 
我使用strip函数来摆脱换行符,因为分割线在4 gb文件上抛出内存错误。
示例代码:
 with open('C:\\aapl.csv','r') as apple: for apps in apple.readlines(): print(apps.strip()) 
 最简单的方法是编写file.readline()[0:-1]这将读取除最后一个字符(换行符)之外的所有内容。