Python从数组中删除括号和字符串引号

4
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
4个回答

3
你正在将一个列表添加到结果中(split返回一个列表)。此外,指定“space”作为分隔符并不是最好的选择,因为它不能去除换行符、回车符、双空格,这些会创建一个空元素。
你可以使用列表推导式来做到这一点,不带参数地拆分项(因此\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

0
你可以尝试以下操作:
myArray = [[v.strip() for v in x] for x in myArray]

这将删除所有格式字符。

如果您不想让每个字符都在自己的数组中,那么可以这样做:

myArray = [v[0] for v in myArray]

要打印,那么就使用 'print(', '.join(myArray))


0

看起来你应该使用strip()(修剪空格)而不是split()(生成字符串块列表)。

myArray.append(line.strip())

然后 'print(myArray)' 将生成:

['a', 'b', 'c', 'd']

要打印出'a, b, c, d',你可以使用join()函数:

print(', '.join(myArray))

0
你可以尝试类似这样的代码:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接