首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSV中每个字符之间的逗号

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

Stack Overflow用户
提问于 2019-07-13 11:42:38
回答 2查看 276关注 0票数 1

我尝试将列表直接保存为csv文件,但当我打开csv文件时,每个字符之间都会出现逗号。

我要保存的列表是'BUD','ABBV','MO','WEED.TO','TAP','CGC','ACB‘。

代码语言:javascript
运行
复制
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)

csv显示为

代码语言:javascript
运行
复制
B,U,D
A,B,B,V
M,O
EN

回答 2

Stack Overflow用户

发布于 2019-07-13 12:25:07

因为tickers是一个字符串列表,所以当您执行writer.writerows(tickers)操作时,每个字符串都被视为一个字符列表并保存在csv中,因此BUD变成了['B,'U','D'],依此类推

这会导致['BUD', 'ABBV', 'MO', 'WEED.TO', 'TAP', 'CGC', 'ACB']变成[['B', 'U', 'D'], ['A', 'B', 'B', 'V'], ['M', 'O'], ['W', 'E', 'E', 'D', '.', 'T', 'O'], ['T', 'A', 'P'], ['C', 'G', 'C'], ['A', 'C', 'B']],并被保存为这样。

因此,您希望传递writer.writerows列表的列表,或者将该列表传递给writer.writerow

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

代码语言:javascript
运行
复制
writer.writerows(tickers)

你想做什么

代码语言:javascript
运行
复制
writer.writerows([tickers])

代码语言:javascript
运行
复制
writer.writerow(tickers)

csv将如下所示

代码语言:javascript
运行
复制
BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB
票数 3
EN

Stack Overflow用户

发布于 2019-07-13 12:45:55

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

代码语言:javascript
运行
复制
data = ['BUD', 'ABBV', 'MO', 'WEED.TO', 'TAP', 'CGC', 'ACB']

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

open('cannabisTickers', 'w+').write(a)

输出CSV文件:-

代码语言:javascript
运行
复制
BUD,ABBV,MO,WEED.TO,TAP,CGC,ACB

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57015941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档