用python从文件中读取列表格式的数据
我知道这对你们大家来说一定是个简单的问题。我有一个文本文件,其中包含以下面列表格式编写的测试用例用python从文件中读取列表格式的数据,python,list,Python,List,我知道这对你们大家来说一定是个简单的问题。我有一个文本文件,其中包含以下面列表格式编写的测试用例 [["arg1", "arg2", "arg3"], "Fail"] [["arg1", "arg2", "arg4"], "Pass"] 我想在这样一个列表中读取这个文件,我可以打印list1[1]=>Fail 谢谢你的帮助 下面的代码示例如何: 我很喜欢这个 示例myfile.txt: [["arg1", "arg2", "arg3"], "Fail"] [["arg1", "arg2",
[["arg1", "arg2", "arg3"], "Fail"]
[["arg1", "arg2", "arg4"], "Pass"]
我想在这样一个列表中读取这个文件,我可以打印list1[1]=>Fail
谢谢你的帮助 下面的代码示例如何: 我很喜欢这个 示例myfile.txt:
[["arg1", "arg2", "arg3"], "Fail"]
[["arg1", "arg2", "arg4"], "Pass"]
主python文件
file1 = open('myfile.txt', 'r')
count = 0
while True:
count += 1
# Get next line from file
list = file1.readline()
if not list:
break
#convert string to list
res = list.strip('][').split(', ')
print(res[1])
逐行读取文件后,使用拆分将列表字符串转换为列表。
您有一个.txt文件。
行的格式为[[arg1、arg2、arg3……等],失败/通过]
方法是使用正则表达式查找双引号之间的所有文本并附加到列表中。最后一个作为失败/通过,其余为args
进口稀土
结果=[]
打开“text.txt”,将“r”作为f:
对于f中的行:
match=re.findall\.*?\,line.strip
结果.追加[match[:-1],match[-1]]
打印结果
打印结果[0][0]
打印结果[0][1]
示例输入.txt文件
输出
[[['arg1', 'arg2', 'arg3', 'arg4'], 'Fail'], [['arg1', 'arg2', 'arg4'], 'Pass']]
['arg1', 'arg2', 'arg3', 'arg4']
Fail
您可以编写一些非常简单的字符串操作代码,正如大家在这里提供的那样。我就是这样做的:
text = """
[["arg1", "arg2", "arg3"], "Fail"]
[["arg1", "arg2", "arg4"], "Pass"]
"""
for line in text.strip().splitlines():
line = line.replace('[', '')
line = line.replace(']', '')
print line.split(',')[-1].strip()
这并不漂亮,但如果你想在生产中实现这一点,你可以用很多更好的方法来实现。只要使用eval,它的内部python函数,你就不需要库了 例如:
lists = []
line1 = '[["arg1", "arg2", "arg3"], "Fail"]'
line2 = '[["arg1", "arg2", "arg4"], "Pass"]'
# Evaluate Lines
exLine1 = eval(line1)
exLine2 = eval(line2)
# Append Lines to lists
lists.append(exLine1)
lists.append(exLine2)
# Testing Example of your use case
print(str(exLine1[1] == "Fail"))
import ast
with open('list.txt') as f:
lines = f.readlines()
data = [ast.literal_eval(line) for line in lines]
for item in data:
print(item[1])
只需将此示例转换为您正在使用的for循环,它将快速而简单您可以使用ast.literal\u eval将字符串行安全地转换为python表达式
例如:
lists = []
line1 = '[["arg1", "arg2", "arg3"], "Fail"]'
line2 = '[["arg1", "arg2", "arg4"], "Pass"]'
# Evaluate Lines
exLine1 = eval(line1)
exLine2 = eval(line2)
# Append Lines to lists
lists.append(exLine1)
lists.append(exLine2)
# Testing Example of your use case
print(str(exLine1[1] == "Fail"))
import ast
with open('list.txt') as f:
lines = f.readlines()
data = [ast.literal_eval(line) for line in lines]
for item in data:
print(item[1])
您可以尝试以下方法:
with open("test.txt", "r") as test_file:
content = test_file.readlines()
print(content)
print(type(content))
for data in content:
print(ast.literal_eval(data)[1])
print("*" * 30)
for i in range(1, len(content)+1):
print(i)
输出:
index: 0
[["arg1", "arg2", "arg3"], "Fail"]
index: 1
[["arg1", "arg2", "arg4"], "Pass"]
您需要类似:[arg1,arg2,arg3]=>失败?不,我希望输出类似,输出列表[1]失败。我尝试了,但它不起作用。。。谢谢你的帮助。你好,迪帕克,谢谢你的尝试。但您正在读取一个列表中的所有值,而我需要文本文件中的列表格式。请参阅此链接以将列表的字符串表示形式转换为列表。我喜欢你的方法。很好尝试ev350。谢谢你的帮助。谢谢,Sergey Tolokonnikov,我尝试了这个模块,但是犯了一些愚蠢的错误。谢谢,Nasreen尝试了,但是这个解决方案没有给我正确的元素。你绝对不能在python中使用eval。阅读
1
2