python按行读取文件,如何去掉换行符"\n

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python按行读取文件,如何去掉换行符"\n相关的知识,希望对你有一定的参考价值。

1、打开需要修改的文件代码。

2、因为有中文的缘故,strip(),rstrip(),strip('\\n')等等都会丢失数据。

3、改用replace函数。先看看这里的换行符到底是哪个,是‘\\n’。

4、替换。注意这里把‘\\n’替换成了‘ ’(空格)。成功。

5、注意这里的split函数,设置了‘ ’空格来分离,而且设置了分离的次数。如果直接使用纯粹的split()函数,结果是不正确的,部分中文信息丢失。

参考技术A

说明:

python按行读取文件直接使用for in open方式即可,去除'\\n',可以使用两种方法,一种是替换函数:replace('\\n','')把换行符替换成空;一种是去除空白字符函数:rstrip('\\n')就是把字符串末尾指定字符删除,这里删除换行符('\\n')。

代码:

方法1:

for line in open('要打开的文件名', 'r'):  # 打开文件
    rs = line.replace('\\n', '')  # 替换换行符
    print(rs)  # 显示替换后的行

方法2:

for line in open('要打开的文件名', 'r'):  #打开文件
    rs = line.rstrip('\\n')  # 移除行尾换行符
    print(rs)  # 输出移除后的行

函数说明:

replace(...)

S.replace(old, new[, count]) -> str    
    返回S出现的所有old子串的换成new子串的字符串。如果可选参数count指定,只有第一计数出现被替换。

rstrip(...)
    S.rstrip([chars]) -> str

返回字符串S结尾去掉空格的副本。如果参数字符给出,则只删除指定字符,而不是空格。

参考技术B 换行符与其他字符并没有区别

由于换行符总是最后一个字符,所有直接选择除去最后一个字符的所有字符即可
x = 'abc\n'
x[:-1]
也可以使用字符串的strip方法
但是strip方法除了会去掉换行符还会去掉空格等其他字符
x.strip()本回答被提问者采纳
参考技术C line = line.strip('\n\r')

python如何随机读取一行

有一个txt里面几百万行,请问用python如何随机的读取其中一行呢?

#!/usr/bin/env python
# coding: utf-8

def getfilelines(filename, eol='\\n', buffsize=4096):
    """计算给定文件有多少行"""
    with open(filename, 'rb') as handle:
        linenum = 0
        buffer = handle.read(buffsize)
        while buffer:
            linenum += buffer.count(eol)
            buffer = handle.read(buffsize)
        return linenum


def readtline(filename, lineno, eol="\\n", buffsize=4096):
    """读取文件的指定行"""
    with open(filename, 'rb') as handle:
        readedlines = 0
        buffer = handle.read(buffsize)
        while buffer:
            thisblock = buffer.count(eol)
            if readedlines < lineno < readedlines + thisblock:
                # inthisblock: findthe line content, and return it
                return buffer.split(eol)[lineno - readedlines - 1]
            elif lineno == readedlines + thisblock:
                # need continue read line rest part
                part0 = buffer.split(eol)[-1]
                buffer = handle.read(buffsize)
                part1 = buffer.split(eol)[0]
                return part0 + part1
            readedlines += thisblock
            buffer = handle.read(buffsize)
        else:
            raise IndexError


def getrandomline(filename):
    """读取文件的任意一行"""
    import random
    return readtline(
        filename,
        random.randint(0, getfilelines(filename)),
        )


if __name__ == "__main__":
    import sys
    import os
    if len(sys.argv) == 1:
        print getrandomline("/home/tim/documents/users.csv")
    else:
        for f in filter(os.path.isfile, sys.argv[1:]):
            print getrandomline(f)

对于超大文件建议用逐行或分块的方式处理;逐行处理可能慢一些,但编码更简单清晰一点;上面给出的是按分块方式处理的。

参考技术A #xx.py
#use:python xx.py file

import random
import sys

def random_read(read_file):
    count = 0 
    for count, line in enumerate(open('read_file','rU')):
        count += 1

    line = random.randint(0,count-1)

    f = open('read_file','r').readlines()[line]
    print f
    
def main():
    if len(sys.argv) != 2:
        print 'use: %s filename' % sys.argv[0]
        sys.exit(1)
    read_file = sys.argv[1]
    random_read(read_file)
    
if __name__ == "__main__":
    main()

追问

对不起 我想要python3的,另外能不用python xx.py file这种命令行形式吗?直接open('test.txt。改好后我再给你加分

追答

改最后面就行了

if __name__ == "__main__":
random_read('test.txt') #最好带路径
开头加个这个#!/usr/bin/env python 运行的时候直接./xx.py就可以了
python3应该库跟语法都不一样吧
这个逻辑很简单 你可以自己尝试一下变成python3的代码:)

本回答被提问者采纳
参考技术B   用Python实现的随机读取文件某一行写的简短代码,仅适用于短的文件,大文件需要修改下获取行数代码。

  #coding=utf-8

  #! /usr/bin/python

  import random

  import linecache

  def hello():

  count = len(open('hello.txt','rU').readlines())#获取行数

  hellonum=random.randrange(1,count, 1)#生成随机行数

  return linecache.getline('hello.txt',hellonum)#随机读取某行

  if __name__ == "__main__":

  hello()
参考技术C import random
f=open('a.txt')
randomLineNumber=int(raw_input('Please input a random line no.:').strip())
for i in range(randomLineNumber):
    x=f.tell()# get the current position of the file
    f.readline()
    if x==f.tell():
        print "Error: The file only has %d lines, so, "%i+\\
            "it's impossible to get the line you want!!!"
        exit(1)
print f.readline()[:-1]
f.close()

参考技术D 试试这个方法:http://computer.uoh.edu.cn/python/634.html

以上是关于python按行读取文件,如何去掉换行符"\n的主要内容,如果未能解决你的问题,请参考以下文章

python按行读取文件,如何去掉换行符"\n

python按行读取文件,如何去掉换行符"\n

python按行读取文件,如何去掉换行符"\\n

python按行读取文件,如何去掉换行符"\n

Python 按行读取txt文件,如何去掉换行符"\n"

python读取文件,换行问题