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

时间:2018-01-18 00:33:21

标签: python-3.x

其实我的文件内容是。
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  

3 个答案:

答案 0 :(得分:0)

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))

答案 1 :(得分:0)

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

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',我们将继续进行条件分支。

在条件分支中,我们将加入contcc = ",".join(cont[:-1])中的第一个和第二个字符串。但是,由于我们'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循环,其值在条件分支内被替换。

答案 2 :(得分:0)

版本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)