我有一个名为fulldataset
的大文件。我想从fulldataset写一个名为newdataset的新文件。我只想写一些来自fulldataset的行,虽然它包含listfile中存在的id号。此外,所有id号都以XY开头。 id号出现在每行的中间。
以下是列表文件中的示例行:
Robert, Brown, "XY-12344343", 1929232, 324934923,
这是我到目前为止的程序。它运行正常,但不会在新文件中写入任何内容。
datafile = open('C:\\listfile.txt', 'r')
completedataset = open('C:\\fulldataset.txt', 'r')
smallerdataset = open('C:\\newdataset.txt', 'w')
matchedLines = []
for line in datafile:
if line.find("XY"):
matchedLines.append( line )
counter = 1
for line in completedataset:
print counter
counter +=1
for t in matchedLines:
if t in line:
fulldataset.write(line)
del line
break
datafile.close()
completedataset.close()
fulldataset.close()
编辑:
好的,这是新计划:
datafile = open('C:\\tryexcel33.txt', 'r')
completedataset = open('C:\\fulldataset.txt', 'r')
smallerdataset = open('C:\\newdataset.txt', 'w')
counter = 1
for line in completedataset:
print counter
counter +=1
if any( id in line for id in datafile ):
smallerdataset.write( line )
break
datafile.close()
completedataset.close()
fulldataset.close()
我仍然没有写入新文件的任何内容。我认为一个问题可能是在完整文件中id号有一个“在它们前面,但这在listfile中不存在。有什么想法吗?
答案 0 :(得分:1)
我不明白你的代码。这是执行您所要求的代码:
ids = set( datafile.readlines( ) )
for line in fulldataset:
if any( id in line for id in ids ):
smallerdataset.write( line )
"foo" in "XY-foo"
仍然是真的)。如果没有写入行,那是因为datafile
的行不完全是ID。请从datafile
发布样本。
您还在重复使用变量line
,这将使您的代码以神秘的方式出错。
您还有一个break
语句,最多会写入一行。为什么呢?
很多道歉,我只是重新阅读代码 - 出于某种原因我假设datafile
是一个列表。它实际上是一个文件,所以我以前的代码不起作用。请参阅固定代码。