将字符串列表转换为元组

3 投票
3 回答
3217 浏览
提问于 2025-04-17 08:56

你好,我正在尝试用Python做一个字典。需要做的事情是让Python读取一个文本文件,这个文件里面有一些值,比如说:

good    buono

我做的事情是,用文件功能打开这个文件,然后替换掉制表符,并添加反引号,以创建一个列表,这样看起来像

["('good', 'buono')", "('afternoon', 'pomeriggo')",... and so on

但是问题是,每个单词的翻译类型不是元组,而是字符串。当我尝试查看第一个元素(编号0)时,它显示的值是

"('good', 'buono')"

这其实是一个字符串。我需要使用字典的公式,这样才能把类型转换成字典,但我做不到,因为它是字符串的列表(应该是元组的列表)。

那么,我该如何把这个字符串的列表转换成元组的列表呢?

3 个回答

1

ast的确可以像@onemach建议的那样使用,不过你可能更想把字符串读成元组的形式。

代码片段:

li = []
with open("file.txt", 'r') as f:
    li.append(tuple(f.readline().split('\t')))

这段代码会根据制表符(tab)来分割字符串,然后把分割后的内容放进一个元组对象里,最后再把这个元组添加到一个列表中。

4

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解和使用这些数据,我们通常需要将它们转换成一种统一的格式。

比如说,如果你有一个数字和一个字符串,你可能需要把它们都转换成字符串,这样才能进行比较或者拼接。这个过程叫做“类型转换”。

在不同的编程语言中,类型转换的方式可能会有所不同。有的语言会自动帮你转换,有的则需要你手动去做。

总之,理解数据的类型和如何转换它们是编程中非常重要的一部分,尤其是在处理复杂数据时。

with open('input.txt') as f:
     result = map(str.split, f)
     # -> [['good', 'buono'], ['afternoon', 'pomeriggo']]
     d = dict(result)
     # -> {'good': 'buono', 'afternoon': 'pomeriggo'}
4

假设你文件里的每一对单词都是在单独的一行上,你可以这样做:

mydict = {line.split()[0]: line.split()[1] for line in myfile}

这会把像这样的文件

good    buono
afternoon   pomeriggo
thanks    grazie

转换成

{"good": "buono", "afternoon": "pomeriggo", "thanks": "grazie"}

在这个过程中不需要使用元组。

.split() 方法会根据空格把输入的字符串分开,同时去掉开头和结尾的空格:

>>> "  good\tbuono  \n".split()
['good', 'buono']

撰写回答