我有一个文件文件,当打开文件时看起来像这样:
'element1', 'element2', 'element3', 'element4'
然后我使用列表推导将其读入列表
thelist = [line.strip() for line in open('file.txt', 'r')]
但是列表看起来像这样,只有一个元素在索引0
["'element1', 'element2', 'element3', 'element4'"]
由于双引号被附加到第一个和最后一个元素的末尾,因此python认为它是单个元素列表。有没有办法在列表推导中使用“strip()”来删除那些外部双引号?
答案 0 :(得分:1)
你没有列表,你有一个看起来像Python序列的字符串。
您可以使用ast.literal_eval()
将其解释为Python文字;它将被解析为字符串元组:
import ast
thelist = [ast.literal_eval(line) for line in open('file.txt', 'r')]
或者您可以在逗号上拆分,然后删除空格和引号:
thelist = [[elem.strip(" '") for elem in line.split(',')]
for line in open('file.txt', 'r')]
仅当您引用的值不包含逗号时才有效。
无论哪种方式,您都会获得列表清单;你可以压扁那个清单:
thelist = [elem for line in open('file.txt', 'r')
for elem in ast.literal_eval(line)]
或只是阅读一行:
thelist = ast.literal_eval(next(open('file.txt', 'r')))
您也可以使用csv
module:
import csv
reader = csv.reader(
open('file.text', 'rb'),
quotechar="'", skipinitialspace=True)
thelist = list(reader)
或仅限第一行:
thelist = next(reader)