将字符串列表转换为元组
你好,我正在尝试用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']