Python CSV中每个字符之间的逗号

Python CSV中每个字符之间的逗号,python,python-3.x,csv,Python,Python 3.x,Csv,我试图将列表直接保存为csv文件,但当我打开csv文件时,它会在每个字符之间显示逗号 我试图保存的列表是['BUD'、'ABBV'、'MO'、'WEED.to'、'TAP'、'CGC'、'ACB'] def cannabisTickers(): if __name__ == '__main__': resp = requests.get('https://finance.yahoo.com/u/yahoo-finance/watchlists/420_stocks/',

我试图将列表直接保存为csv文件,但当我打开csv文件时,它会在每个字符之间显示逗号

我试图保存的列表是['BUD'、'ABBV'、'MO'、'WEED.to'、'TAP'、'CGC'、'ACB']

def cannabisTickers():
    if __name__ == '__main__':
        resp = requests.get('https://finance.yahoo.com/u/yahoo-finance/watchlists/420_stocks/',
                            headers={
                                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0'
                            })
        assert '<table class="cwl-symbols' in resp.text
        soup = BeautifulSoup(resp.text, 'html.parser')
        table = soup.select_one('.cwl-symbols')
        tickers = []
        for row in table.select('tr'):
            ticker = [cell.text for cell in row.select('td')]
            if ticker:
                tickers.append(ticker[0])
    with open('cannabisTickers', 'w') as csvFile:
        writer = csv.writer(csvFile)
        writer.writerows(tickers)
    csvFile.close()
    print(tickers)

由于
tickers
是一个字符串列表,因此在执行
writer.writerows(tickers)
操作时,每个字符串都会作为字符列表保存在csv中,因此
BUD
变成
['B,'U','D']
等等

这导致
['B','ABBV','MO','WEED.TO','TAP','CGC','ACB'].
变成
['B','U','D'],['A','B','V'],['M','O'],['W','E','E','D'.','T','T','A','p'],['C','G','C'],['A','C','B'].
,并以此方式保存

因此,您需要传递的列表列表,或将列表传递给

因此,假设
tickers=['BUD','ABBV','MO','WEED.TO','TAP','CGC','ACB']
,而不是

writer.writerows(tickers)
你想做什么

writer.writerows([tickers])

csv将看起来像

BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB

由于
tickers
是一个字符串列表,因此在执行
writer.writerows(tickers)
操作时,每个字符串都会作为字符列表保存在csv中,因此
BUD
变成
['B,'U','D']
等等

这导致
['B','ABBV','MO','WEED.TO','TAP','CGC','ACB'].
变成
['B','U','D'],['A','B','V'],['M','O'],['W','E','E','D'.','T','T','A','p'],['C','G','C'],['A','C','B'].
,并以此方式保存

因此,您需要传递的列表列表,或将列表传递给

因此,假设
tickers=['BUD','ABBV','MO','WEED.TO','TAP','CGC','ACB']
,而不是

writer.writerows(tickers)
你想做什么

writer.writerows([tickers])

csv将看起来像

BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB

您可以简单地使用原始文件写入操作,因为
.csv
没有任何特殊编码,因此我们可以像访问常规文本文件一样访问/存储
.csv
中的数据

data = ['BUD', 'ABBV', 'MO', 'WEED.TO', 'TAP', 'CGC', 'ACB']

a = "".join([x + "," for x in data])[:-1]

open('cannabisTickers', 'w+').write(a)
输出CSV文件:-

BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB

我倾向于选择上面的方法,因为它不涉及模块的导入,使用原始文件处理,因此速度要快得多。

好吧,您可以简单地使用原始文件写入操作,因为
.csv
没有任何特殊编码,因此,我们可以访问/存储
.csv
中的数据,就像它是一个常规文本文件一样

data = ['BUD', 'ABBV', 'MO', 'WEED.TO', 'TAP', 'CGC', 'ACB']

a = "".join([x + "," for x in data])[:-1]

open('cannabisTickers', 'w+').write(a)
输出CSV文件:-

BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB

我倾向于选择上面的方法,因为它不涉及模块的导入,使用原始文件处理,因此速度要快得多。

或只是
writer.writerow(tickers)
。或只是
writer.writerow(tickers)
。除非有
\n
在数据中。”。根据,包含换行符、双引号和逗号的字段应该用双引号括起来,也就是说,如果数据包含这些字符,那么它们应该/可以用双引号括起来。例如,
a=r''after,today'
(如果字符是
\n
,则包括r,以防止unicode解码错误)。这样做是为了确保数据库管理软件(如Excel)不考虑包含上述字符之一的数据作为一个分米表。因此,这些字符也可以使用,如果包含在
中,则除非数据中有
\n
,否则应该可以使用。根据,包含换行符、双引号和逗号的字段应该用双引号括起来,也就是说,如果数据包含这些字符,那么它们应该/可以用双引号括起来。例如,
a=r''after,today'
(如果字符是
\n
,则包括r,以防止unicode解码错误)。这样做是为了确保数据库管理软件(如Excel)不考虑包含上述字符之一的数据作为一个分米表。因此,如果包含在