Python CSV解析并将新行打印到stdou

2024-09-26 04:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,它有三列。第三列“row[02]”有一个IP列表,其中包含逗号分隔的IP列表。我想转一下:

"column01", "column02", "192.168.1.1, 192.168.2.1, 192.168.3.1"

进入(减去子弹):

  • column01, column02, 192.168.1.1
  • column01, column02, 192.168.2.1
  • column01, column02, 192.168.3.1

提供了我的代码,但输出始终显示以下内容:

row01, row02, 192.168.1.1, 192.168.2.1, 192.168.3.1

如果需要其他信息,请告诉我。提前谢谢。在

原始代码:

#!/usr/bin/python
import csv, sys, time, logging

s = time.strftime('%Y%m%d%H%M%S')

# Create exception file from standard output
class Logger(object):
    def __init__(self):
        self.terminal = sys.stdout
        self.log = open((s) + "_" + sys.argv[1], "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message) 

def main():
    # Start screen capture to output into CSV file
    sys.stdout = Logger()

    # File input argument
    with open(sys.argv[1], "rb") as f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            print row[0], ",", row[1], ",", row[2]

if __name__=='__main__':
    main()

更新代码:

^{pr2}$

Tags: csv代码selfipmessage列表maindef
1条回答
网友
1楼 · 发布于 2024-09-26 04:58:37

它打印这个的原因是:

row01, row02, 192.168.1.1, 192.168.2.1, 192.168.3.1

是你要求它对每一行都执行以下操作:

^{pr2}$

如果你想让它做一些不同的事情,你必须告诉它做一些不同的事情。它不能读懂你的思想。所以,如果你想,例如,在逗号上拆分row[2],你需要写一些这样的代码。像这样:

for row in reader:
    addresses = row[2].split(", ")
    for address in addresses:
        print row[0], ",", row[1], ",", address

相关问题 更多 >