Python CSV.writerow在每个字符之间都有逗号?

Python CSV.writerow在每个字符之间都有逗号?,python,csv,numpy,Python,Csv,Numpy,我目前正在调用python脚本中的python脚本,并试图将调用的输出保存在CSV文件中。但是,目前它可以工作,每个字符之间都有一个逗号,因此输出是不正确的 这是什么原因造成的 import csv import GetAlexRanking #External Method exposed here import subprocess import pandas as p import tai import numpy as np loadData = lambda f: np.genfro

我目前正在调用python脚本中的python脚本,并试图将调用的输出保存在CSV文件中。但是,目前它可以工作,每个字符之间都有一个逗号,因此输出是不正确的

这是什么原因造成的

import csv
import GetAlexRanking #External Method exposed here
import subprocess
import pandas as p
import tai
import numpy as np

loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ')
with open('train.tsv','rb') as tsvin, open('PageRanks.csv', 'wb') as csvout:
    tsvin = list(np.array(p.read_table('train.tsv'))[:,0])
    csvout = csv.writer(csvout)

    for row in tsvin:
        count = 0
        cmd = subprocess.Popen("python GetAlexRanking.py " + row ,
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE,
                           shell=True)
        (output, err) = cmd.communicate()
        exit_code = cmd.wait()
        print exit_code #testing
        print output
        print err
        csvout.writerow(row + "\t" + output) #writing,error here
        count+=1
编辑:

在cmd中调用函数时,如so
“python GetAlexRanking.py www.google.com”
返回的示例行是:

www.google.com
AlexaTrafficRank:1
GooglePageRank:9
我希望将其保存在tsv中(添加空格以使格式更清晰,所有列仅由选项卡分隔:))


您将向csv.write传递一个字符串,然后它将该字符串解释为一个列表,并因此按每个列表元素(即字符)将其拆分。我犯了很多次这个错误

试试这个:

# add coustom code to split the row up into the values, hint user row.split()
csvout.writerow([row, output]) 

您将向csv.write传递一个字符串,然后它将该字符串解释为一个列表,并因此按每个列表元素(即字符)将其拆分。我犯了很多次这个错误

试试这个:

# add coustom code to split the row up into the values, hint user row.split()
csvout.writerow([row, output]) 

看起来您希望输入和输出都是列表。因此,让您的输入保持一组字符串,并在每行将其拆分为一个列表

返回的示例行显示为三行。这是否意味着它是一个带有列分隔符的长字符串?如果是这种情况,则拆分输出并插入选项卡

  outrow = row # row is already a list
  outrow.append(output.split('\t'))
  csvout.writerow(outrow)
再次查看您的示例,似乎您想要输出两个tsv行,一个带有“header”,另一个带有“rank”。因此(为了便于阅读,有额外的行)


然后,您可以像在示例输出中那样写入两个输出行

看起来您希望输入和输出都是一个列表。因此,让您的输入保持一组字符串,并在每行将其拆分为一个列表

返回的示例行显示为三行。这是否意味着它是一个带有列分隔符的长字符串?如果是这种情况,则拆分输出并插入选项卡

  outrow = row # row is already a list
  outrow.append(output.split('\t'))
  csvout.writerow(outrow)
再次查看您的示例,似乎您想要输出两个tsv行,一个带有“header”,另一个带有“rank”。因此(为了便于阅读,有额外的行)


然后,您将像在示例输出中一样写入两个输出行

请显示一个示例行,输出是什么样的,它应该是什么样的。请注意,csv文件的第一个输出应该是标题行。您考虑过csv.DictWriter()吗?请给出
tsvin
中的示例元素。我只能假设
tsvin=list(np.array(p.read_table('train.tsv'))[:,0])
实际上返回一个字符串,然后调用list()将其拆分为小块。e、 g.;>>>列表(“helloworld”)['h','e','l','l','o','w','o','r','l','d']@sabbahillel问题更新了(我相信)所有信息。多谢各位@sleepycal我现在添加了这个;谢谢:)请显示一个示例行,输出是什么样子的,应该是什么样子的。请注意,csv文件的第一个输出应该是标题行。您考虑过csv.DictWriter()吗?请给出
tsvin
中的示例元素。我只能假设
tsvin=list(np.array(p.read_table('train.tsv'))[:,0])
实际上返回一个字符串,然后调用list()将其拆分为小块。e、 g.;>>>列表(“helloworld”)['h','e','l','l','o','w','o','r','l','d']@sabbahillel问题更新了(我相信)所有信息。多谢各位@sleepycal我现在添加了这个;谢谢:)@sabbaillel谢谢你的回复,不过我很难理解这一点。我想分开保存输出选项卡,在输出的第一行中有一组列标题。您能告诉我如何使用您的代码来完成此任务吗?对于给您带来的不便,我深表歉意;此代码运行时没有出现以下错误:outrow.append(output.split('\t'))AttributeError中第23行的文件“GeneratePageRanks.py”中:“str”对象没有属性“append”@sabbaillel谢谢您的响应,但是我很难理解这一点。我想分开保存输出选项卡,在输出的第一行中有一组列标题。您能告诉我如何使用您的代码来完成此任务吗?对于给您带来的不便,我深表歉意;运行此代码时不会出现以下错误:outrow.append(output.split('\t'))AttributeError中第23行的文件“GeneratePageRanks.py”中的AttributeError:“str”对象没有属性“append”,您是如何解决此问题的?“您正在将一个字符串传递给csv.write,然后它将其解释为一个列表,并因此按每个列表元素将其拆分。”我得到一个输出,其中所有本应是普通字符串语句的行都被拆分为多个字符。您是如何解决这个问题的?“您正在将一个字符串传递给csv.write,然后它将其解释为一个列表,并因此按每个列表元素将其拆分。”我得到一个输出,其中所有应该只是普通字符串语句的行都被拆分为多个字符。