在Python中打印设置时删除设置标识符
问题描述:
我想打印出一个设置的内容,当我这样做时,我在打印输出中获得设置标识符。例如,这是我的输出set(['a', 'c', 'b', 'e', 'd', 'f', 'gg', 'ff', 'jk'])
“为下面的代码我想摆脱这个词set
我的代码非常简单,下面在Python中打印设置时删除设置标识符
infile = open("P3TestData.txt", "r")
words = set(infile.read().split())
print words
这里又是我的输出,以供参考:。set(['a', 'c', 'b', 'e', 'd', 'f', 'gg', 'ff', 'jk'])
答
你可以设定转换到一个列表,只是打印:
print list(words)
或者你可以使用str.join()
用逗号加入集的内容:
print ', '.join(words)
答
print
声明使用set
的__str__()
的实现。您可以:
-
推出自己的打印功能,而不是使用
print
。一个简单的方法来获得一个更好的格式可能使用的__str__()
的list
实现,而不是:print list(my_set)
覆盖在自己的
set
子类__str__()
实施。
答
如果你想要在大括号你可以这样做:
>>> s={1,2,3}
>>> s
set([1, 2, 3])
>>> print list(s).__str__().replace('[','{').replace(']','}')
{1, 2, 3}
或者,使用格式为:
>>> print '{{{}}}'.format(', '.join(str(e) for e in set([1,'2',3.0])))
{3.0, 1, 2}
答
如果在Python 3打印一组数字,则可以选择使用切片。
Python 3.3.5
>>> s = {1, 2, 3, 4}
>>> s
{1, 2, 3, 4}
>>> str(s)[1:-1]
'1, 2, 3, 4'
移植回Python2时,此翻译不好......
Python 2.7.6
>>> s = {1, 2, 3, 4}
>>> str(s)[1:-1]
'et([1, 2, 3, 4]'
>>> str(s)[5:-2]
'1, 2, 3, 4'
在另一方面,以join()
整数值,你必须转换为字符串第一:
Python 2.7.6
>>> strings = {'a', 'b', 'c'}
>>> ', '.join(strings)
'a, c, b'
>>> numbers = {1, 2, 3, 4}
>>> ', '.join(numbers)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> ', '.join(str(number) for number in numbers)
'1, 2, 3, 4'
然而,这比切片更正确。
答
这个子类适用于数字和字符:
class sset(set):
def __str__(self):
return ', '.join([str(i) for i in self])
print set([1,2,3])
print sset([1,2,3])
输出
set([1, 2, 3])
1, 2, 3