我无法想出如何摆脱我的元组列表中每个字符串附带的引号。从互联网上尝试了不同的方法,但对我来说仍然无效。有人可以帮帮我吗?
这是我的琐事:
[('Alabama', 'Montgomery', '32.361538', '-86.279118'),
('Alaska', 'Juneau', '58.301935', '-134.41974')]
我需要:
[(Alabama, Montgomery, 32.361538, -86.279118),
(Alaska, Juneau, 58.301935, -134.41974)]
我需要的只是以不同的方式阅读文件:
我的原始数据,用标签分隔:
Alabama Montgomery 32.361538 -86.279118
Alaska Juneau 58.301935 -134.41974
我用这个命令读取文件:
with open('city-data.txt') as f:
mylist = [tuple(i.strip().split('\t')) for i in f]
答案 0 :(得分:1)
您可以创建一个类并覆盖其__repr__
方法以满足您的格式需求,如下所示:
inList = [('Alabama', 'Montgomery', '32.361538', '-86.279118'), ('Alaska', 'Juneau', '58.301935', '-134.41974')]
class Formatter:
def __init__(self, word):
self.word = word
def __repr__(self):
return self.word
outList = [tuple(Formatter(elem) for elem in tup) for tup in inList]
print(outList)
输出:
[(Alabama, Montgomery, 32.361538, -86.279118), (Alaska, Juneau, 58.301935, -134.41974)]
答案 1 :(得分:0)
如果你的意思是你想要它作为一个python对象,这是不可能的 - 除非它是一个绑定到一个值的符号,否则Alabama的泛词在python中并不意味着什么,这显然不是你在这里想要的。但是,您可以将数字字符串转换为数字,最后以
结尾[('Alabama', 'Montgomery', 32.361538, -86.279118),
('Alaska', 'Juneau', 58.301935, -134.41974)]
但是,我想您可能只想打印没有引号的值,这更简单:
out = '['
for tup in your_list:
out += '({},{},{},{}),\n'.format(*tup)
if your_list:
out = out[:-2]
out += ']'
print out
# [(Alabama,Montgomery,32.361538,-86.279118),
# (Alaska,Juneau,58.301935,-134.41974)]