用字符串python删除引号

时间:2018-02-12 18:26:39

标签: python string formatting

我无法想出如何摆脱我的元组列表中每个字符串附带的引号。从互联网上尝试了不同的方法,但对我来说仍然无效。有人可以帮帮我吗?

这是我的琐事:

[('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]

2 个答案:

答案 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)]