Python 跳过CSV文件中的某些字符

Python 跳过CSV文件中的某些字符,python,csv,Python,Csv,我正在写一个脚本来解析每一家技术类上市公司的纳斯达克文件。它是由逗号分隔的CSV。然而,有时一家公司的名字被列为XXX,Inc.这个逗号会弄乱我在脚本中的表格,所以它会得到错误的值。我正在解析公司股票的符号,所以,'Inc.'会把地方弄得一团糟 我对Python相当陌生,所以我对它没有太多经验,但我已经尽了最大的努力,并且已经让它读写了CSV,但是这个解析问题对我来说很困难。这就是我目前拥有的: try: # py3 from urllib.request import Requ

我正在写一个脚本来解析每一家技术类上市公司的纳斯达克文件。它是由逗号分隔的CSV。然而,有时一家公司的名字被列为XXX,Inc.这个逗号会弄乱我在脚本中的表格,所以它会得到错误的值。我正在解析公司股票的符号,所以,'Inc.'会把地方弄得一团糟

我对Python相当陌生,所以我对它没有太多经验,但我已经尽了最大的努力,并且已经让它读写了CSV,但是这个解析问题对我来说很困难。这就是我目前拥有的:

try:
    # py3
    from urllib.request import Request, urlopen
    from urllib.parse import urlencode
except ImportError:
    # py2
    from urllib2 import Request, urlopen
    from urllib import urlencode

import csv
import urllib.request
import string

def _request():
    url = 'http://www.nasdaq.com/screening/companies-by-industry.aspx?industry=Technology&render=download'
    req = Request(url)
    resp = urlopen(req)
    content = resp.read().decode().strip()
    content1 = content.replace('"', '')
    return content1

def symbol_quote():
    counter = 1
    recursive = 9*counter

    values = _request().split(',')
    values2 = values[recursive]
    return values2
    counter += 1


def csvwrite():
    import csv
    path = "symbol_comp.csv"
    data = [symbol_quote()]
    parsing = False

    with open(path, 'w', newline='') as csv_file:
        writer = csv.writer(csv_file, delimiter=' ')
        for line in data:
            writer.writerow(line)
我还没有做到这一点,所以它根据计数器循环和操作,因为现在没有意义。这个解析问题更为紧迫

有人能帮一个新手吗?

\u request()
更改为使用
csv.reader()
cStringIO.StringIO()
并返回一个
csv.reader
对象,您可以迭代:

try:
    # py3
    from urllib.request import Request, urlopen
    from urllib.parse import urlencode
except ImportError:
    # py2
    from urllib2 import Request, urlopen
    from urllib import urlencode

import csv, cStringIO
##import urllib.request
import string

def _request():
    url = 'http://www.nasdaq.com/screening/companies-by-industry.aspx?industry=Technology&render=download'
    req = Request(url)
    resp = urlopen(req)
    sio = cStringIO.StringIO(resp.read().decode().strip())
    reader = csv.reader(sio)
    return reader
用法:

data = _request()
print 'fields:\n{}\n'.format('|'.join(data.next()))
for n, row in enumerate(data):
    print '|'.join(row)
    if n == 5: break

# fields:
# Symbol|Name|LastSale|MarketCap|ADR TSO|IPOyear|Sector|Industry|Summary Quote|
# 
# VNET|21Vianet Group, Inc.|25.87|1137471769.46|43968758|2011|Technology|Computer Software: Programming, Data Processing|http://www.nasdaq.com/symbol/vnet|
# TWOU|2U, Inc.|13.28|534023394.4|n/a|2014|Technology|Computer Software: Prepackaged Software|http://www.nasdaq.com/symbol/twou|
# DDD|3D Systems Corporation|54.4|5630941606.4|n/a|n/a|Technology|Computer Software: Prepackaged Software|http://www.nasdaq.com/symbol/ddd|
# JOBS|51job, Inc.|64.32|746633699.52|11608111|2004|Technology|Diversified Commercial Services|http://www.nasdaq.com/symbol/jobs|
# WUBA|58.com Inc.|37.25|2959078388.5|n/a|2013|Technology|Computer Software: Programming, Data Processing|http://www.nasdaq.com/symbol/wuba|
# ATEN|A10 Networks, Inc.|10.64|638979699.12|n/a|2014|Technology|Computer Communications Equipment|http://www.nasdaq.com/symbol/aten|

哇,停下来。您使用的是
csv.writer
来写入数据,而不是
csv.reader
来读取数据(这将处理转义逗号,方法是像您需要的那样将它们括在引号中)。