python csv文件数据根据逗号分隔_Python 3读取以逗号分隔的CSV文件操作变量并写到CSV...
我是Python的新手,并希望阅读下面列出的内容的CSV文件:
DN, whenCreated, name, pwdLastSet, location
"CN=Jackson2,OU=Domain Controllers,DC=one,DC=onecity,DC=net",20100623145323.0Z,Jackson8,1.30745E+17,Japan,
"CN=Jackson4,OU=Prod,OU=Windows 2014 Servers,OU=STE,DC=one,DC=onecity,DC=net",20041208192730.0Z,Jackson7,1.30735E+17,Aussie,
该CSV文件的长度为数千行,我想将所有字段输出到新的CSV文件中,然后将whenCreated和pwdLastSet字段更改为易于阅读的格式。任何意见,将不胜感激。请注意,在此示例中,有5列包含3行,第一行是列标题。
因此,请放心,因为这是我编写的第一个python脚本。但是,任何建议,评论和最佳实践都将不胜感激。
import csv
import sys
import time
from datetime import datetime
def adTimestampToUnix(ad):
#Convert an 18-digit Windows NT timestamp to a UNIX timestamp
return int(((ad / 10000000) - 11644473600))
import datetime
file = open("source.csv", 'rt')
fileWrite = open("target.csv", 'w', newline='')
try:
csvFile = csv.reader(file)
csvWrite = csv.writer(fileWrite, dialect='excel')
for row in csvFile:
csvWrite.writerow(row)
for row in csvFile:
whenCreated = row[1]
year = whenCreated[:4]
month = whenCreated[4:6]
day = whenCreated[6:8]
hour = whenCreated[8:10]
minute = whenCreated[10:12]
seconds = whenCreated[12:14]
whenCreated =(month+"/"+day+"/"+year+" "+hour+":"+minute+":"+seconds)
pwdLastSet = int(row[3])
pwdLastSet = adTimestampToUnix(pwdLastSet)
if pwdLastSet < 1:
pwdLastSet = ""
else:
pwdLastSet = datetime.datetime.utcfromtimestamp(pwdLastSet).strftime('%Y-%m-%d %H:%M:%S')
row = (row[0],whenCreated,row[2],pwdLastSet,row[4])
csvWrite.writerow(row)
finally:
file.close()
解决方案
如您对问题的第一条评论所述,csv模块将负责CSV文件的基本读写。使用第一个示例
import csv
with open('some.csv', newline='') as f:
reader = csv.reader(f)
for row in reader:
print(row)
与您的CSV文件一起显示,acsv.reader会将文件中的每一行都转换为字符串列表
['DN',' whenCreated',' name',' pwdLastSet',' location']
['"CN=Jackson2,OU=Domain Controllers,DC=one,DC=onecity,DC=net"','20100623145323.0Z','Jackson8','1.30745E+17','Japan','']
同样,acsv.writer将获取值列表并将其写入输出文件中的一行。
简单。
因此,您的问题中真正有趣的部分是:
I)修复第一行(列标题)
请注意,第一个列表中的大多数列名称都有一个前导空格。我们希望摆脱这些问题,因为它们可能会带来问题。如果您使用其他语言,则可能会考虑使用循环,例如
for i in range(len(row)):
row[i] = row[i].strip()
但是,在Python中,首选形式是使用“列表理解”,
row = [x.strip() for x in row]
II)whenCreated进入“人类可读格式”。
确实已经是,但是一些破折号和冒号会将其转换为ISO 8601日期格式,因此让我们使用.format像这样的字符串对象的方法
x = row[1]
row[1] = '{}-{}-{}T{}:{}:{}'.format(x[:4],x[4:6],x[6:8],x[8:10],x[10:12],x[12:])
row[1]从...转换
20100623145323.0Z
...对此:
2010-06-23T14:53:23.0Z
III)pwdLastSet进入“人类可读格式”。
我从您更新的问题中看到,这些数字是18位Active Directory时间戳(以科学计数法表示),因此您可以使用datetime我们将其转换为绝对正确
from datetime import datetime
row[3] = datetime.utcfromtimestamp(float(row[3])/10000000-11644473600).isoformat() + 'Z'
将row[3]从此转换...
1.30745E+17
...对此:
2015-04-26T05:33:20Z
python csv文件数据根据逗号分隔_Python 3读取以逗号分隔的CSV文件操作变量并写到CSV...相关推荐
- python统计excel数据总行数_Python怎么读取Excel的行数和列数?
在把数据写入Excel的过程中遇到了问题,写入的数据是for循环进去的,所以是分多次写入(每次for循环写入一次,一次有几十条数据). 但是在第二次for循环写数据时,就会覆盖掉第一次写的数据,就是后 ...
- python处理完数据导入数据库_python操作数据库之批量导入
python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...
- python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建
原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了<双剑合壁--Python和大数据计算平台 ...
- python excel处理数据的优点_python处理excel的优势是什么
我们经常在工作中需要处理大量的数据,所以Excel工作中是一个不可或缺的工具.然而,最近很多人都开始使用Python来处理数据,那么为什么你开始使用Python吗?Python协助处理excel的优势 ...
- 读取ANSYS结果文件中的数据C语言,Ansys后处理读取非默认的结果文件数据 | 坐倚北风...
在进行后处理时,Ansys默认读取当前目录下的默认求解结果文件.Ansys的求解结果文件有以下几种: (1).RST – 结构分析或耦合场分析结果: (2).RTH – 热分析和扩散分析结果: (3) ...
- java内存中读文件_关于内存管理:读取Java中的大文件
我需要一个非常了解Java和内存问题的人的建议. 我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件). 我通常知道如何做到这一点(使用BufferedReader), ...
- 打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)
打包部署后无法读取jar包里的文件 Java中读取jar包中的文件 linux中无法读取jar包中的内容(windows可以的!),如何解决 一.背景 项目中免不了需要读取文件,如果文件用绝对路径读取 ...
- python pandas写入数据后保存_python读取MySQL数据使用pandas写入到csv,并保存列名
实现的功能:通过pymysql连接MySQL数据库,查询所需数据,然后使用pandas写入到csv文件,并且写入包含数据列名. import sys import pandas as pd impor ...
- python对文本数据进行采样_Python对wav文件的重采样实例
例如从2channel,4.41k hz 重采样到 1 channel,16k hz def downsampleWav(src, dst, inrate=44100, outrate=16000, ...
最新文章
- jenkins ssl证书报错问题解决
- 黄聪:TortoiseGit(乌龟git)保存用户名密码的方法
- 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
- git fock的子项目从上游仓库(源项目)同步更新
- 云图说|初识ModelArts开发者生态社区——AI Gallery
- 表格数据的识别与提取
- Tensorflow 搭建自己的神经网络(四)
- Java实现json对比(递归)
- 罗克露计算机组成,罗克露计算机组成原理课件(一)
- 渗透函数实现排序的函数层次聚类或者叫做凝
- 外贸常用术语_外贸业务中常用的术语
- 通过EasyPOI导入excel数据
- python和工程造价_不会Python的将慢慢被淘汰!
- webstorm自定义文件模板
- Kaggle泰坦尼克号预测——Last
- 你会给论文正确加引用吗?
- 企业微信集成EAS流程助手
- 云测试软件详解,云计算存储测试:FIO工具入门与实战
- python数据分析基础试题_Python数据分析基础知识
- 哈工大计算机专硕和学硕学费,毕业后才知道,学硕和专硕截然不同,选错的学生悔不当初...
热门文章
- Kafka的生成者、消费者、broker的基本概念
- 这款图片剪裁开源项目,简直逆天了
- 计算机辅助教学常用的教学模式,计算机辅助教学的“两种模式”
- 如果《让子弹飞》里吃凉粉的是郭德纲,会怎么样?
- spring框架测试题
- 有奖讨论| 感恩,老师您辛苦了!
- 图像色彩通道分离与合并--opencv学习笔记
- 程序猿 MVC常规面试题
- C++ 学习之查找算法adjacent_find(相邻重复查找)、binary_search(二分法查找)
- 中国电子学会2022年06月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)