简体   繁体   English

从文本文件中读取,解析它,然后将其转换为csv

[英]Reading from a text file, parsing it, then converting it to a csv

I have this text file, that contains user information. 我有这个包含用户信息的文本文件。 I want to parse the data, so I only have the username, and then I want to create a csv file with that parsed data. 我想解析数据,所以我只有用户名,然后我想创建一个带有解析数据的csv文件。

This is the text file, my script is reading from. 这是文本文件,我的脚本是从中读取的。

blah.com\user1:dajlfnadjhlasdjasnasjlfn:test1
blah.com\user2:dajlfnadjhlasdjasnasjlfn:test2
blah.com\user3:dajlfnadjhlasdjasnasjlfn:test3
blah.com\user4:dajlfnadjhlasdjasnasjlfn:test4
blah.com\user5:dajlfnadjhlasdjasnasjlfn:test5
blah.com\user6:dajlfnadjhlasdjasnasjlfn:test6

Here is my script 这是我的剧本

import time, os, os.path, sys, string, datetime, time, shutil, csv

#Locate the file

globalpath = 'C:\\users\\userinfo\\'

todaysdatefull = datetime.datetime.now()
todaysdate = todaysdatefull.strftime("%Y-%m-%d")

datapath = globalpath + 'data\\' + todaysdate + "\\"
logfile = datapath + 'userinfo.txt'
potfile = datapath + 'parsed.csv' 

infile = logfile
outfile = potfile
lines = []

# Open the file, find the username and parses it

with open(infile, 'r') as f:
        for line in f:
                usernamestart = line.find('\\')
                usernameend = line.find(':')
                username = line[usernamestart+1:usernameend]
                lines.append(username)
print(username)


# Outputs the data as a csv file

with open(outfile, 'w') as csv:
        writer = csv.writer(csv)
        for i in range(len(lines)):
                 writer.writerow(('Username', 'Date'))
                 writer.writerow(lines[i])

Result: 结果:

Traceback (most recent call last):
  File "C:\Automation\autocrack\highrisk_parser.py", line 33, in <module>
    writer = csv.writer(csv)
AttributeError: 'file' object has no attribute 'writer'

It is coming from this line with open(outfile, 'w') as csv: , your are overwriting the csv import. 它来自这行with open(outfile, 'w') as csv: ,你正在覆盖csv导入。 You should rename the file where you write like this 您应该像这样重命名文件

with open(outfile, 'w') as csv_to_write:
    writer = csv.writer(csv_to_write)
    # Write the header once.
    writer.writerow(tuple(['Username', 'Date']))
    for one_line in lines:
        # you have to give the function a tuple, if not, the writerow iterates on each element of the string for writing it in a new line.
        writer.writerow(tuple([one_line, '']))

Your first part of code finding the username can be done as following: 您找到用户名的代码的第一部分可以完成如下:

with open(infile, 'r') as f:
    lines = [line.split('\\')[-1].split(':')[0] for line in f]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM