如何在python中第二次迭代期间打印文件行的第一个字符串



实际上我的文件内容是。ttsighser66 dagadfgadgadgfadg
dafgad fgadfgad

ttsighser63
sadfsadf
asfdas

我的代码

file=open("C:\file.txt","r")
cont = []
for i in file:
dd = i.strip("n")
cont.append(dd)
cc = ",".join(cont)
if "tt" in i:
cc = ",".join(cont[:-1])
print(cont[-1], cc)
cont = []

我的代码在输出下面生成:

ttsighser66 
ttsighser63 dagadfgadgadgfadg,dafgad,fgadfgad

但是我想要像下面格式这样的输出

ttsighser66,dagadfgadgadgfadg,dafgad,fgadfgad  
ttsighser63,sadfsadf,asfdas  
file=open("file.txt","r")
cont = []
for i in file:
dd = i.strip("n")
cont.append(dd)
#print('cc',cont)
if "ttsighser" in i and len(cont) != 1:
cc = ",".join(cont[:-1])
print(cc)
cont = []
cont.append(dd)
print(",".join(cont))

如果您不需要将任何字符串存储到列表中,只需要打印字符串,则可以尝试此操作。

with open("file.txt", "r") as f:
line_counter = 0
file_lines = f.readlines()
for i in file_lines:
dd = i.strip()
if "tt" in dd:
print("{0}{1}".format("n" if line_counter > 0 else "", dd), end="")
else:
print(",{0}".format(dd), end="")
line_counter += 1
print("")

代码显示的原因

ttsighser66 
ttsighser63 dagadfgadgadgfadg,dafgad,fgadfgad

而不是

ttsighser66,dagadfgadgadgfadg,dafgad,fgadfgad  
ttsighser63,sadfsadf,asfdas

是因为当你第一次遇到'ttsighser66'时,它被附加到cont。然后由于'ttsighser66'包含'tt',我们将进入条件分支。

在条件分支中,我们将在cc = ",".join(cont[:-1])cont连接第一个和第二个到最后一个字符串。但是,由于我们只有'ttsighser66'contcont[:-1]会给我们[](一个空列表)。由于cont[:-1]是空的,",".join(cont[:-1])也将是空的。因此,cc将是空的。由于cc是空的,print(cont[-1], cc)会给我们ttsighser66.

在第二行中,显示ttsighser63 dagadfgadgadgfadg,dafgad,fgadfgad是因为cont已经包含多个值,因此它还将显示'ttsighser63'之前的值。

其余字符串不会显示,因为根据您的代码,它需要另一个包含'tt'的字符串才能显示cc中的字符串。

本质上,您需要一对包含'tt'的字符串来显示对之间的字符串。


另外一点:代码中cc = ",".join(cont)行似乎毫无用处,因为它的范围仅限于for循环,并且其值在条件分支中被替换。

版本 1(字符串列表中的所有数据&&1时间打印)

fp=open("file.txt", "r")
data = []
for line in fp:
if "tt" in line:
data.append(line.strip())
else:
data.append(data.pop() + "," + line.strip())
fp.close()
[print (data) for line in data]

版本 2(单个字符串中的所有数据 &&1 时间打印)

fp=open("file.txt","r")
data = ""
for line in fp:
if "tt" in line:
data += "n" + line.strip()
else:
data += ","+line.strip()
fp.close()
data = data[1:]
print (data)

最新更新