在阅读.txt文档时,Python会添加额外的\ n字符和空格

时间:2017-04-25 12:34:21

标签: python python-3.x readfile

我正在深入和广度地搜索Python中的顶点列表。我试图读取.txt文件,如下所示:

    50
    60
    45
    12
    68
    21
    13
    24

我的代码如下:

def readFile(x):
    fin = open(x, 'r')
    readline = fin.read()
    x,y = [], []

    for line in readline:
        row = line.split()
        x.append(row[0])
        print(x)
        y.append(row[1])

不幸的是,当代码将txt文件读入Python时,这只会将6读入程序并终止说该索引超出y的范围。在我的.txt文件中,除了每组点的末尾之外没有空格或\ n字符。

关于为什么要添加所有这些额外的空格和\ n字符的想法?

旁注:当我使用sys.stdout.write(line)时,输出正是我正在寻找的,但我无法将其编入索引。

with open(x) as fin:
        for line in fin:
            sys.stdout.write(line)

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

def readFile(x):
    with open(x, 'r') as fin:
        x, y = [], []
        for line in fin:
            row = line.strip()
            x.append(row[0])
            y.append(row[1])
        print(x,y)

readFile('a.txt')        

编辑: 你必须使用readlines()或read()。split()[都将内容读入内存]或者你可以只迭代对象[这将一次只保留一行]

您必须使用条带删除不分割的额外白色字符

CREATE TABLE searches(
searchID INT UNSIGNED NOT NUL,
userID INT UNSIGNED NOT NULL,
searchParams VARCHAR(100) DEFAULT NULL,
creationDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

INDEX(userID, searchID)
)ENGINE MyISAM;

输出: ['5','6','4','1','6','2','1','2'] ['0','0','5','2', '8','1','3','4']

答案 1 :(得分:0)

你很近,删除readline = fin.read();这是读第一个'6'。

然后,将for line in readline:改为for line in fin:

最后,您的文件似乎有空行,因此您必须跳过它们:

line = line.strip()
if line != '': 
    row = line
    x.append(row[0])
    print(x)
    y.append(row[1])

答案 2 :(得分:0)

因为你没有足够的答案,所以这是另一个!

{{1}}