从Python

时间:2017-08-06 15:51:13

标签: python arrays

我在Python中编写一些代码来从文件中读取一些文本,并从中创建一个二维数组。但是当我制作数组时,在前两个数组(三个)的最后一个位置有:' \ n',我想删除它。

这是文件(data.txt):

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z

这是Python代码:

data = open("data.txt", mode="r")

arr = data.readlines()

for i in range(len(arr)):
    arr[i] = list(arr[i].split(","))

#here I tryed to detele it
for i in range(len(arr)):
    if arr[i][len(arr[i])-1] == '\\n':
       del arr[len(arr[i])-1]

data.close()

这是代码的结果(但无论如何都是' \ n'):

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\n']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\n']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

我如何删除这些?

4 个答案:

答案 0 :(得分:3)

使用str.rstrip()str.splitlines()函数的简短解决方案:

with open('data.txt', 'r') as f:
    items = [l.rstrip(',').split(',') for l in f.read().splitlines()]
    print(items)

输出:

[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']]

答案 1 :(得分:2)

您可以使用rstrip和列表理解。

with open("data.txt", 'r', encoding="utf-8") as file:
    array = [line.rstrip(',\n').split(',') for line in file]

答案 2 :(得分:0)

您可以过滤列表,只保留不是“\ n”的值:

module/Users/src/

答案 3 :(得分:0)

您可以在阅读以下内容时删除\n

arr = []

with open('data.txt', mode="r") as f:
    for line in f.readlines():
        arr.append(line.strip(',\n').split(','))

print arr