Python CSV输出到多列而不是一列

Python CSV输出到多列而不是一列,python,csv,nmap,Python,Csv,Nmap,所以我发现它给了我现在正在使用的代码。def所在的最后几行代码 但是生成的csv文件在一列中包含所有数据。有没有办法强迫它将每个数据集放在自己的列中?还是我应该坚持在事后使用Excel进行分离 我正在“打印”的数据格式如下;我相信这是一对钥匙。 ”主机;主机名;主机名类型;协议港口;名称国家;产品;外部信息;理性;版本形态;cpe' … import sys import os import nmap from datetime import datetime import time impor

所以我发现它给了我现在正在使用的代码。
def
所在的最后几行代码

但是生成的csv文件在一列中包含所有数据。有没有办法强迫它将每个数据集放在自己的列中?还是我应该坚持在事后使用Excel进行分离

我正在“打印”的数据格式如下;我相信这是一对钥匙。
”主机;主机名;主机名类型;协议港口;名称国家;产品;外部信息;理性;版本形态;cpe'
…

import sys
import os
import nmap
from datetime import datetime
import time
import csv


#Ask for user input and assign IP\subnet and port range.
print("_" * 40) #style options
ip_range = '192.168.3.132' #str(input('\nEnter an IP or subnet: '))
user_ports = '100-200' #str(input('\nEnter Ports to scan: '))
print("\nScanning IP " + ip_range + ". For ports " + user_ports + ".")



#add banner containing time stamps.
before = datetime.now()
print("_" * 40) #style options
print("\nScanning Target "+ip_range)
print('\n') #style options
print("Time Started: "+ str(datetime.now().strftime('%m-%d-%Y %H:%M:%S'))+'\n')



print("~" * 40)#style options
print('\n')#style options


#name scan configuration
nmap_scan = nmap.PortScanner()
nmap_scan.scan(str(ip_range), str(user_ports))

#printing out ports that are up
for host in nmap_scan.all_hosts():
    print("Host: %s (%s)" % (host, nmap_scan[host].hostname()))
    print("state: %s" % nmap_scan[host].state())
    for proto in nmap_scan[host].all_protocols():
        print("\n")
        print("Protocol used: %s" % proto)

        lport = sorted(nmap_scan[host][proto].keys())
        for port in lport:
            print("Port: %s\tState: %s" % (port, nmap_scan[host][proto][port]['state']))


print('\n')#style options

#export nmap scan to csv file
#export nmap scan to csv file
def save_csv_data(nmap_scan_csv, path='.'):
        with open(path + '/output.csv', 'w') as output:
            output.write(nmap_scan_csv)

if (len(sys.argv) > 1 and sys.argv[1]):
    save_csv_data(nmap_scan.csv(), path=sys.argv[1])
else:
    save_csv_data(nmap_scan.csv())

print("_" * 50)#style options
print('\n\n')#style options

#Finished time
after = datetime.now()
print("Time finished: "+ str(datetime.now().strftime('%m-%d-%Y %H:%M:%S')))

#time elapsed during scan
print('\n')#style options
delta =  after-before
print("Time elapsed: " + str(delta))

''

请包含一个。您的数据看起来像是用
分隔的请确保使用此分隔符作为csv分隔符,而不是默认的
我已经尝试了很多方法来确定如何将分隔符指定为“;”。有什么建议吗?
nm.csv()
看起来像什么?你有吗?
192.168.1.5;computer.contoso.com;PTR;tcp;135;msrpc;打开微软视窗RPC;;同步确认;;10;cpe:/o:microsoft:windows
这是excel当前输出到1个单元格中的内容。它还输出头
主机;主机名;主机名类型;协议港口;名称国家;产品;外部信息;理性;版本形态;cpe
。我可以发布整个代码,但您需要安装nmap。我应该发布所有代码吗?