将行存储到数组中并逐行打印

时间:2020-10-25 03:37:07

标签: python arrays sorting readlines

当前代码:

filepath = "C:/Bg_Log/KLBG04.txt"
with open(filepath) as fp:
    lines = fp.read().splitlines()
    with open(filepath, "w") as fp:
        for line in lines:
            print("KLBG04",line,line[18], file=fp)

输出:

KLBG04 20/01/03 08:09:13 G0001 G

要求灵活地移动列,还可以使用数组或列表如下所示操作日期

KLBG04 03/01/20 G0001 G 08:09:13

4 个答案:

答案 0 :(得分:0)

为什么不将输出本身存储为字符串,并使用split()方法在每个空格处拆分字符串,然后对索引1(包含日期的索引)使用另一种拆分方法并在每个/处将其再次拆分(以便您可以操纵日期)。


for line in lines:
        String output ="KLBG04",line,line[18], file=fp   # Rather than printing store the output in a string #
x = output.split(" ")
date_output = x[1].split("/")
# Now you can just manipulate the data around and print how you want to #

答案 1 :(得分:0)

尝试先split()行,然后按所需顺序打印列表

from datetime import datetime # use the datetime module to manipulate the date

filepath = "C:/Bg_Log/KLBG04.txt"
with open(filepath) as fp:
    lines = fp.read().splitlines()
    with open(filepath, "w") as fp:
        for line in lines:
            date, time, venue = line.split(" ") # split the line up
            date = datetime.strptime(date, '%y/%m/%d').strftime('%d/%m/%y') # format your date
            print("KLBG04", date, venue, venue[0], time, file=fp) # print in your desired order

答案 2 :(得分:0)

您没有提供示例数据,但我认为这可能有效:

filepath = "C:/Bg_Log/KLBG04.txt"
with open(filepath) as fp:
    lines = fp.read().splitlines()
    with open(filepath, "w") as fp:
        for line in lines:
            ln = "KLBG04 " + line + " " + line[18]  # current column order
            sp = ln.split()  # split at spaces
            dt = '/'.join(sp[1].split('/')[::-1])  # reverse date
            print(sp[0],dt,sp[3],sp[-1],sp[-2]) # new column order
            # print("KLBG04",line,line[18], file=fp)

答案 3 :(得分:0)

尝试一下 `

for line in lines:
    words = line.split()  # split every word
    date_values = words[0].split('/') # split the word that contains date
    
    #create a dictionary as follows
    date_format = ['YY','DD','MM']
    date_dict = dict(zip(date_format, date_values))
    
    #now create a new variable with changed format
    new_date_format = date_dict['MM'] + '/' + date_dict['DD'] + '/' + date_dict['YY']
    print(new_date_format)
    
    #replace the first word [index 0 is having date] with new date format
    words[0] = new_date_format
    
    #join all the words to form a new line
    new_line = ' '.join(words)
    print("KLBG04",new_line,line[18])

`