实际上我的文件内容是。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'
cont
,cont[:-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)