Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么write命令不能处理生成的字符串和预生成的字符串?_Python_Python 3.x_List_Csv - Fatal编程技术网

Python 为什么write命令不能处理生成的字符串和预生成的字符串?

Python 为什么write命令不能处理生成的字符串和预生成的字符串?,python,python-3.x,list,csv,Python,Python 3.x,List,Csv,我遇到的问题是,当我使用.write()函数编写预先生成的字符串列表时,它可以正常工作,但当我尝试将数字列表生成为字符串并使用.write()时,它会说我不能使用列表,它必须是字符串 import csv def makeFile(): fileName = "m11prog2.csv" outputData = ['#ENG101-04 Module 11, Program 2\n', 'Noah Sickels\n', '\n', 'x,x^2\n']

我遇到的问题是,当我使用.write()函数编写预先生成的字符串列表时,它可以正常工作,但当我尝试将数字列表生成为字符串并使用.write()时,它会说我不能使用列表,它必须是字符串

import csv
def makeFile():
    fileName = "m11prog2.csv"
    outputData = ['#ENG101-04 Module 11, Program 2\n', 'Noah Sickels\n', '\n', 'x,x^2\n']
    newData = []
    with open(fileName, 'w') as f:
        for i in range(1, 1001): 
            #dataStr = f'{i}, {i**2}\n'
            dataStr = ''+str(i)+','+str(i**2)+'\n'
            newData.append(dataStr)
        outputData.append(newData)
        for data in outputData:
            f.write(data)

我不明白的是,为什么.write()允许我将第一个列表“outputData”写入文件,而不是将新数据写入文件,因为它们是相同类型的列表。

因为您有这一行

import csv
def makeFile():
    fileName = "m11prog2.csv"
    outputData = ['#ENG101-04 Module 11, Program 2\n', 'Noah Sickels\n', '\n', 'x,x^2\n']
    newData = []
    with open(fileName, 'w') as f:
        for i in range(1, 1001): 
            #dataStr = f'{i}, {i**2}\n'
            dataStr = ''+str(i)+','+str(i**2)+'\n'
            """the line below appends the second list to the first and causes the error"""
            newData.append(dataStr) 
        outputData.append(newData)
        for data in outputData:
            f.write(data)

在这一行中,您将第二个列表(newData)附加到第一个列表(outputData),当循环到达outputData中的最后一项时,它会给出一个错误。

outputData中的前4项作为
data
都是字符串,可以写入文件。outputData中最后一项为
data
,是字符串列表,不适合写入文件。