Я бы использовал что-то подобное. Очень похоже на ответ Лоуренса, но с преобразованием метки времени, которое вы запросили, и принимает имя файла в качестве параметра. Этот код предполагает, что вы работаете с последними датами (после 9/9/2001). Если вам нужны более ранние даты, опустите от 10 до 9 или меньше.
import re, sys, time
regex = re.compile(r'(\d{10,})')
def convert(unixtime):
return time.strftime("%Y%m%d", time.gmtime(unixtime))
for line in open(sys.argv[1]):
sys.stdout.write(regex.sub(lambda m: convert(int(m.group(0))), line))
РЕДАКТИРОВАТЬ: Очистить код.
Пример ввода
foo,1234567890,bar,1243310263
cat,1243310263,pants,1234567890
baz,987654321,raz,1
Выход
foo,20090213,bar,20090526
cat,20090526,pants,20090213
baz,987654321,raz,1 # not converted (too short to be a recent)