从.txt文件python读取列表

从.txt文件python读取列表,python,list,Python,List,我想创建包含几个列表的.txt a=['210','210','210','210'] b=['0.3','0.3','0.3','0.3'] c=['7.85e-06','7.85e-06','7.85e-06','7.85e-06','7.85e-06'] 以open(“abcd.txt”、“w”)作为输出: 输出写入(str(a)) 以open(“abcd.txt”、“a”)作为输出: 输出写入(str(b)) 以open(“abcd.txt”、“a”)作为输出: 输出写入(str(c))

我想创建包含几个列表的.txt

a=['210','210','210','210']
b=['0.3','0.3','0.3','0.3']
c=['7.85e-06','7.85e-06','7.85e-06','7.85e-06','7.85e-06']
以open(“abcd.txt”、“w”)作为输出:
输出写入(str(a))
以open(“abcd.txt”、“a”)作为输出:
输出写入(str(b))
以open(“abcd.txt”、“a”)作为输出:
输出写入(str(c))
所以测试文件生成如下

['210', '210', '210', '210']['0.3', '0.3', '0.3', '0.3']['7.85e-06', '7.85e-06', '7.85e-06', '7.85e-06']
现在我想提取所有列表的第一个元素。 我该怎么做? 在这里,每个列表包含4个元素,但也可能更高。

您可以使用
.index()
查找“]”的位置,并使用
.count()
查找您有多少个元素:

以open('abcd.txt,'r')作为输入的
:
content=input.read()
字符串=[]
开始=0
对于范围内的uu(content.count(']')):
end=content.index(']',start)+1
追加(内容[开始:结束]
开始=结束
对于字符串中的字符串:
打印(字符串[1:string.index(','))
.index()
的第二个参数告诉它从哪个位置开始搜索,以避免总是返回第一个']'的位置

输出:

'210'
'0.3'
'7.85e-06'
但是,如果您要将数据存储在文件中,我建议您使用更结构化的方式,例如JSON,每种语言都有一个解析器。

您可以使用
.index()
查找']'的位置,并使用
.count()
查找您拥有的数据量:

以open('abcd.txt,'r')作为输入的
:
content=input.read()
字符串=[]
开始=0
对于范围内的uu(content.count(']')):
end=content.index(']',start)+1
追加(内容[开始:结束]
开始=结束
对于字符串中的字符串:
打印(字符串[1:string.index(','))
.index()
的第二个参数告诉它从哪个位置开始搜索,以避免总是返回第一个']'的位置

输出:

'210'
'0.3'
'7.85e-06'

但是,如果要将数据存储在文件中,我建议您使用更结构化的方式,例如JSON,每种语言都有一个解析器。

首先读取文件并将数据存储在变量中

with open('abcd.txt','r') as myFile:
    data = myFile.read()
然后移除第一个和最后一个方括号,因为它们不需要

data = data[1:-1]
然后从“][”中分割数据,因为这是两个列表的交汇处

lists=data.split("][")
然后获取所有元素的第一个值并将其存储在另一个列表中,如:

firstelements = []
for aList in lists:
    firstelements.append(aList.split(",")[0])

首先读取文件并将数据存储在变量中

with open('abcd.txt','r') as myFile:
    data = myFile.read()
然后移除第一个和最后一个方括号,因为它们不需要

data = data[1:-1]
然后从“][”中分割数据,因为这是两个列表的交汇处

lists=data.split("][")
然后获取所有元素的第一个值并将其存储在另一个列表中,如:

firstelements = []
for aList in lists:
    firstelements.append(aList.split(",")[0])

可以使用
+
运算符连接字符串。请尝试以下操作:

a = ['210','210','210','210']
b = ['0.3','0.3','0.3','0.3']
c = ['7.85e-06','7.85e-06','7.85e-06','7.85e-06']

to_save = str(a) + str(b) + str(c)
with open("abcd.txt", "wb") as output:
    output.write(to_save)

如果要复制代码,最好将其作为函数编写。

可以使用
+
运算符连接字符串。请尝试以下操作:

a = ['210','210','210','210']
b = ['0.3','0.3','0.3','0.3']
c = ['7.85e-06','7.85e-06','7.85e-06','7.85e-06']

to_save = str(a) + str(b) + str(c)
with open("abcd.txt", "wb") as output:
    output.write(to_save)

如果要复制代码,最好将其作为函数编写。

下面是另一个使用
regex
的解决方案



下面是另一个使用
regex
的解决方案


如果您可以使用json(为什么不呢??)-这里是一个基于json的解决方案

import json

a = ['210', '210', '210', '210']
b = ['0.3', '0.3', '0.3', '0.3']
c = ['7.85e-06', '7.85e-06', '7.85e-06', '7.85e-06']

data = {'a': a, 'b': b, 'c': c}

# save to a json file
with open('data.json', 'w') as f:
    json.dump(data, f)

# read from json file and get the data you need
with open('data.json') as f:
    data = json.load(f)
first_values = [x[0] for x in data.values()]
print(first_values)
输出

['210', '0.3', '7.85e-06']
如果您可以使用json(为什么不呢??)-这里是一个基于json的解决方案

import json

a = ['210', '210', '210', '210']
b = ['0.3', '0.3', '0.3', '0.3']
c = ['7.85e-06', '7.85e-06', '7.85e-06', '7.85e-06']

data = {'a': a, 'b': b, 'c': c}

# save to a json file
with open('data.json', 'w') as f:
    json.dump(data, f)

# read from json file and get the data you need
with open('data.json') as f:
    data = json.load(f)
first_values = [x[0] for x in data.values()]
print(first_values)
输出

['210', '0.3', '7.85e-06']


读取第一个列表之前的所有数字。尝试以下操作:
打印(打开(“abcd.txt”).readline().split(“])[0]。替换(“[”,”)
是否需要支持嵌套列表?如
['1',['2a',2b',3]
@adrio..没有嵌套列表..为什么列表之间没有
'\n'
?然后每行有一个列表,可以集中精力分析每行列表?这里处理哪一个btw:在第一个
]之前读取所有数字
尝试以下操作:
打印(打开(“abcd.txt”).readline().split(“]”[0]。替换(“[”,“”)
您需要支持嵌套列表吗?例如
['1',['2a',2b',3]
@adrio..没有嵌套列表..为什么列表之间没有
'\n'
?那么你每行有一个列表,可以专注于每行解析一个列表?这里处理哪一个btw:我可以建议将最后两个语句移出
块,因为没有理由保持该文件打开吗?@adrio有意义。@balderman这在windows中运行得很好,但在linux中会出现错误,例如…回溯(最后一次调用):文件“Untitled3(从脚本编辑器运行)”,第10行,在操作系统错误:[Errno 28]设备上没有剩余空间:“data.json”磁盘已满。请检查。我是否可以建议将最后两条语句移出带有
块的
,因为没有理由保持该文件处于打开状态?@adrio是有道理的。@balderman这在windows中运行良好,但在linux中会出现错误,如…回溯(最近一次调用):file“Untitled3”(从脚本编辑器运行)”,第10行,在操作系统错误:[Errno 28]设备上没有剩余空间:“data.json”磁盘已满。请检查。这不是答案,您建议对他提供的部分代码进行改进,但问题是关于阅读而不是写作。不要试图听起来太刺耳。这不是答案,您建议对他提供的部分代码进行改进,但问题是关于阅读否关于写作。不要试图听起来太刺耳。
eval
,或者在本例中是
ast。literal\u eval
是我认为以纯文本形式存储不是一个很好的主意的原因。现在任何人都可以编辑文件,放置一些以
结尾的python代码
触发您的模式,代码将被运行。我知道
eval
是解析列表的最简单方法,它需要大量的字符串解析,但这也是为什么像CSV和JSON这样的格式已经在标准库中有了解析器的主要原因,这样您就可以将它们存储在文件中,并在以后检索它们,而无需需要
eval
评估潜在的恶意代码。
eval
,或者在这种情况下