python:当第一列与列表中的字符串匹配时,从文本文件中提取行
我有一个列表<代码>[‘狗’、‘猫’、‘蛇’、‘蜥蜴’]。我想使用此列表从文本文件中提取行。我的文本文件以制表符分隔,每行末尾都有新行字符。每行有4列,第一列是我列表中的一个名称。前五行看起来像:python:当第一列与列表中的字符串匹配时,从文本文件中提取行,python,Python,我有一个列表[‘狗’、‘猫’、‘蛇’、‘蜥蜴’]。我想使用此列表从文本文件中提取行。我的文本文件以制表符分隔,每行末尾都有新行字符。每行有4列,第一列是我列表中的一个名称。前五行看起来像: dog data1 data2 data3 dog data1 data2 data3 cat data1 data2 data3 snake data1 data2 data3 lizard data1 data2
dog data1 data2 data3
dog data1 data2 data3
cat data1 data2 data3
snake data1 data2 data3
lizard data1 data2 data3
对于许多行
我想为列表中的每个项目创建一个文本文件。在每个新文件中,我需要原始文件中第一列与列表/新文件中的名称匹配的每一行。这是我写的代码:
filename = "data.txt"
f = open(filename, 'r')
#my list is named Species
for names in Species:
with open(str(names) + ".txt", 'w') as g:
for line in f:
row = line.split()
if names == row[0]:
g.write(row)
我能够创建我想要写入的文本文件,但没有写入任何文件。我没有收到任何错误消息。最后,我希望能够为我感兴趣的每一行提取部分数据列,并将其放入我的新文本文件中。如果您试图将列表直接写入文件(在Python中不合法),您应该会遇到一个错误: Python 2.7:
Python 2.7.10 (default, Sep 13 2015, 20:30:50)
[GCC 5.2.1 20150911] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("test", "w") as f:
... f.write([1,2,3,4])
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: expected a character buffer object
>>>
或者(这就是我要做的)您可以扫描f
一次,并在处理时将每一行分配给适当的动物:
records = {}
for line in f:
animal = line.split()[0]
if not records.get(animal):
records[animal] = []
records[animal].append(line)
for animal in records.keys():
with open("{}.txt".format(animal), "w") as f:
for line in records[animal]:
f.write(line)
尝试将列表直接写入文件时应该会出现错误(在Python中不合法): Python 2.7:
Python 2.7.10 (default, Sep 13 2015, 20:30:50)
[GCC 5.2.1 20150911] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("test", "w") as f:
... f.write([1,2,3,4])
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: expected a character buffer object
>>>
或者(这就是我要做的)您可以扫描f
一次,并在处理时将每一行分配给适当的动物:
records = {}
for line in f:
animal = line.split()[0]
if not records.get(animal):
records[animal] = []
records[animal].append(line)
for animal in records.keys():
with open("{}.txt".format(animal), "w") as f:
for line in records[animal]:
f.write(line)
这是更新的代码
Species = ['dog', 'cat', 'snake', 'lizard']
filename = "data.txt"
for names in Species:
with open(str(names) + ".txt", 'w') as g:
f = open(filename, 'r')
for line in f:
row = line.split()
if names == row[0]:
g.write(str(row))
f.close()
这是更新的代码
Species = ['dog', 'cat', 'snake', 'lizard']
filename = "data.txt"
for names in Species:
with open(str(names) + ".txt", 'w') as g:
f = open(filename, 'r')
for line in f:
row = line.split()
if names == row[0]:
g.write(str(row))
f.close()
此解决方案仍然为我提供空文本文件。此解决方案仍然为我提供空文本文件。