【问题标题】:Python remove brackets and String quotation marks from arrayPython从数组中删除括号和字符串引号
【发布时间】:2017-09-24 08:15:59
【问题描述】:
myArray = []
textFile = open("file.txt")
lines = textFile.readlines()
for line in lines:
myArray.append(line.split(" "))
print (myArray)
这段代码输出
[['a\n'], ['b\n'], ['c\n'], ['d']]
我需要做什么才能输出
a, b, c, d
【问题讨论】:
标签:
python
multidimensional-array
file-handling
【解决方案1】:
你可以试试这样的:
import re
arr = [['a\n'], ['b\n'], ['c\n'], ['d']]
arr = ( ", ".join( repr(e) for e in arr ))
arr = arr.replace('\\n', '')
new = re.sub(r'[^a-zA-Z0-9,]+', '', arr)
print(new)
结果:
a,b,c,d
【解决方案2】:
看来您应该使用 strip()(修剪空白)而不是 split()(生成字符串块列表。
myArray.append(line.strip())
然后 'print(myArray)' 将生成:
['a', 'b', 'c', 'd']
要打印 'a, b, c, d' 你可以使用 join():
print(', '.join(myArray))
【解决方案3】:
您可以执行以下操作:
myArray = [[v.strip() for v in x] for x in myArray]
这将删除所有格式字符。
如果您不希望每个字符都在自己的数组中,那么您可以这样做:
myArray = [v[0] for v in myArray]
要打印,然后 'print(', '.join(myArray))
【解决方案4】:
您正在将list 添加到结果中(split 返回一个列表)。此外,为拆分字符指定“空格”并不是最佳选择,因为它不会删除换行符、回车符、双空格会创建一个空元素。
您可以使用列表推导来做到这一点,不带参数地拆分项目(所以\n 自然而然地消失了)
with open("file.txt") as lines:
myArray = [x for line in lines for x in line.split()]
(注意with 块,因此文件一退出就关闭,双循环将列表列表“展平”为单个列表:可以处理一行中的多个元素)
然后,要么打印数组的表示形式
print (myArray)
得到:
['a', 'b', 'c', 'd']
或者您使用逗号+空格生成连接字符串
print(", ".join(myArray))
结果:
a, b, c, d