如何从 Python itertools 输出中删除字符串引号、逗号和括号?

Posted

技术标签:

【中文标题】如何从 Python itertools 输出中删除字符串引号、逗号和括号?【英文标题】:How to remove string quotations, commas and parenthesis from Python itertools output? 【发布时间】:2021-11-15 07:47:14 【问题描述】:

这个漂亮的脚本生成给定集合 s 的所有 4 个字符排列,并将它们打印在新行上。

import itertools


s = ('7', '8', '-')

l = itertools.product(s, repeat=4)

print(*l, sep='\n')

示例输出:

...
('9', '-', '7', '8')
('9', '-', '7', '9')
('9', '-', '8', '7')
('9', '-', '8', '8')
('9', '-', '8', '9')
...

我不知道如何删除所有单引号、逗号和左/右括号。

期望的输出:

...
9-78
9-79
9-87
9-88
9-89
...

尝试添加:


c = []

for i in l:
    i = i.replace(",", '')
    c.append(i)

print(*c, sep='\n')

错误: AttributeError: 'tuple' object has no attribute 'replace'

也试过了:我似乎找不到在哪里放置 print(' '.join()) 逻辑。

【问题讨论】:

print(*l, sep='\n') 在每一行打印元组,打印时会自动添加括号和逗号。尝试提取元组元素并使用join 创建一个字符串 【参考方案1】:

每次打印一个值时,都可以使用:

for vals in l:
    print("".join([str(v) for v in vals]))

这只是连接所有字符,注意.join 要求值是字符串。

你也可以使用:

for vals in l:
    print(*vals)

...但是值之间有一个空格。

【讨论】:

感谢您的帮助。使用:with open('out.txt', 'w') as f: for i in l:f.write(''.join([str(v) for v in i]) + '\n') 轻松将您的解决方案翻译成文件。

以上是关于如何从 Python itertools 输出中删除字符串引号、逗号和括号?的主要内容,如果未能解决你的问题,请参考以下文章

python自带性能强悍的标准库 itertools

Python for 循环偏移 (Itertools.product)

Python循环器-itertools

无法从 Python 3 上的 itertools izip 导入

从 itertools 模块导入 izip 在 Python 3.x 中会产生 NameError

python itertools 用法