【问题标题】:Add text to each column in csv将文本添加到 csv 中的每一列
【发布时间】:2014-04-15 09:53:51
【问题描述】:

我需要一个 python 脚本在 csv 文件的每一列中添加文本。此格式的文件夹中有 330 个 csv 文件:

14-04-03T08:52:38;...
14-04-03T08:52:39;...
14-04-03T08:52:40;...
...

我需要这种格式(2014 而不是 14):

2014-04-03T08:52:38;...
2014-04-03T08:52:39;...
2014-04-03T08:52:40;...
...

我怎么能意识到这一点?

我的打印代码示例:

import os
import sys 
import csv
dirList = os.listdir(sys.argv[1])
dirList.sort()
for sFile in dirList:
    changeFile = sys.argv[1] + sFile
    print changeFile          
    with open(changeFile, 'rb') as f:
        reader = csv.reader(f, delimiter=';')
        for row in reader:
            print row[0]

有了这个输出:

14-04-03T12:03:34
14-04-03T12:03:35
14-04-03T12:03:36

如何在每列的开头添加“20”?

【问题讨论】:

  • 我已经添加了我的代码。

标签: python csv


【解决方案1】:

一种方法是将文件作为文本文件打开并读取每一行,然后将 '20'+line 写入输出文件,删除原始文件并将输出重命名为原始文件。

【讨论】:

    【解决方案2】:

    当您读取 CSV 文件的每个元素时,只需在点击日期字符串时对其进行解析和转换。

    你可以这样做:

    import time
    import datetime
    
    datetime.datetime(
        *(time.strptime("14-04-03T08:52:38","%y-%m-%dT%H:%M:%S")[:6])
    ).strftime('%Y-%m-%dT%H:%M:%S')
    

    那么它有什么作用呢?

    它将您的日期字符串之一作为输入,例如"14-04-03T08:52:38",并将其解析为实时对象。 我们将此时间对象转换为日期时间对象,并使用您的年份的不同输出重新格式化输出,因此:'2014-04-03T08:52:38'

    现在您只需替换 csv 中的值即可:-)

    import os
    import sys 
    import csv
    import datetime
    import time
    
    dirList = os.listdir(sys.argv[1])
    dirList.sort()
    for sFile in dirList:
        changeFile = sys.argv[1] + sFile
        print changeFile          
        with open(changeFile, 'rb') as f:
            reader = csv.reader(f, delimiter=';')
            for row in reader:
                print datetime.datetime(
                          *(time.strptime(row[0],"%y-%m-%dT%H:%M:%S")[:6])
                      ).strftime('%Y-%m-%dT%H:%M:%S')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多