Python csv 字符串转为数组

2025-02-24 09:30:00
admin
原创
19
摘要:问题描述:有人知道一个简单的库或函数来解析 csv 编码字符串并将其转换为数组或字典吗?我不认为我想要内置的csv 模块,因为在我见过的所有示例中,它都采用文件路径,而不是字符串。解决方案 1:您可以使用将字符串转换为文件对象io.StringIO,然后将其传递给csv模块:from io import St...

问题描述:

有人知道一个简单的库或函数来解析 csv 编码字符串并将其转换为数组或字典吗?

我不认为我想要内置的csv 模块,因为在我见过的所有示例中,它都采用文件路径,而不是字符串。


解决方案 1:

您可以使用将字符串转换为文件对象io.StringIO,然后将其传递给csv模块:

from io import StringIO
import csv

scsv = """text,with,Polish,non-Latin,letters
1,2,3,4,5,6
a,b,c,d,e,f
gęś,zółty,wąż,idzie,wąską,dróżką,
"""

f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
    print('    '.join(row))

split()带有换行符的更简单版本:

reader = csv.reader(scsv.split('
'), delimiter=',')
for row in reader:
    print('    '.join(row))

或者您可以简单地split()将此字符串分成几行,用作`
分隔符,然后split()将每行分成几值,但这样您必须注意引用,因此csv`最好使用模块。

Python 2上,你必须导入StringIO

from StringIO import StringIO

反而。

解决方案 2:

简单——csv 模块也适用于列表:

>>> a=["1,2,3","4,5,6"]  # or a = "1,2,3
4,5,6".split('
')
>>> import csv
>>> x = csv.reader(a)
>>> list(x)
[['1', '2', '3'], ['4', '5', '6']]

解决方案 3:

csv.reader() https://docs.python.org/2/library/csv.html的官方文档 非常有用,其中说

文件对象和列表对象都适用

import csv

text = """1,2,3
a,b,c
d,e,f"""

lines = text.splitlines()
reader = csv.reader(lines, delimiter=',')
for row in reader:
    print('    '.join(row))

解决方案 4:

根据文档:

虽然该模块不直接支持解析字符串,但可以轻松完成:

import csv
for row in csv.reader(['one,two,three']):
    print row

只需将您的字符串变成单个元素列表。

当此示例明确地出现在文档中时,导入 StringIO 对我来说似乎有点过分。

解决方案 5:

正如其他人已经指出的那样,Python 包含一个用于读取和写入 CSV 文件的模块。只要输入字符保持在 ASCII 限制内,它就可以很好地工作。如果您想处理其他编码,则需要做更多工作。

csv 模块的 Python 文档实现了 csv.reader 的扩展,它使用相同的接口,但可以处理其他编码并返回 unicode 字符串。只需从文档中复制并粘贴代码即可。之后,您可以像这样处理 CSV 文件:

with open("some.csv", "rb") as csvFile: 
    for row in UnicodeReader(csvFile, encoding="iso-8859-15"):
        print row

解决方案 6:

不是通用的 CSV 解析器,但可用于带有逗号的简单字符串。

>>> a = "1,2"
>>> a
'1,2'
>>> b = a.split(",")
>>> b
['1', '2']

要解析 CSV 文件:

f = open(file.csv, "r")
lines = f.read().split("
") # "
" if needed

for line in lines:
    if line != "": # add other needed checks to skip titles
        cols = line.split(",")
        print cols

解决方案 7:

https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader

csvfile 可以是任何支持迭代器协议的对象,每次调用其 next() 方法时都会返回一个字符串

因此,一个StringIO.StringIO()str.splitlines()甚至一个生成器都是很好的。

解决方案 8:

使用它将 csv 加载到列表中

import csv

csvfile = open(myfile, 'r')
reader = csv.reader(csvfile, delimiter='    ')
my_list = list(reader)
print my_list
>>>[['1st_line', '0'],
    ['2nd_line', '0']]

解决方案 9:

这是一个替代解决方案:

>>> import pyexcel as pe
>>> text="""1,2,3
... a,b,c
... d,e,f"""
>>> s = pe.load_from_memory('csv', text)
>>> s
Sheet Name: csv
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| a | b | c |
+---+---+---+
| d | e | f |
+---+---+---+
>>> s.to_array()
[[u'1', u'2', u'3'], [u'a', u'b', u'c'], [u'd', u'e', u'f']]

这是文档

解决方案 10:

str对于仍然在寻找将标准 CSV 转换为list[str]以及反向转换的可靠方法的人,这里有我从这个和其他 SO 线程中的一些答案中整理出的两个函数:

def to_line(row: list[str]) -> str:
    with StringIO() as line:
        csv.writer(line).writerow(row)
        return line.getvalue().strip()


def from_line(line: str) -> list[str]:
    return next(csv.reader([line]))

解决方案 11:

对于 csv 文件:

data = blob.download_as_text()

`pd.DataFrame(i.split(",") for i in data.split("
"))`

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1300  
  华为IPD产品开发流程是一套先进且成熟的产品开发管理体系,对众多企业提升产品竞争力有着重要的借鉴意义。它涵盖多个关键要素,这些要素相互关联、相互作用,共同构建起高效、科学的产品开发流程。深入剖析其中的五个核心要素,能让我们更好地理解华为成功背后的产品开发逻辑,为企业的产品创新与发展提供有力的指导。市场管理市场管理是IP...
IPD框架   20  
  华为集成产品开发(IPD)体系作为一套先进的产品开发管理理念和方法,在华为的发展历程中发挥了至关重要的作用。在供应链管理领域,IPD同样展现出巨大的价值,深刻影响着企业的运营效率、产品质量以及市场竞争力。通过将IPD理念融入供应链管理,华为实现了从产品规划到交付的全流程优化,为企业的持续发展奠定了坚实基础。IPD对供应...
IPD集成产品开发流程   23  
  IPD(Integrated Product Development)项目管理作为一种先进的产品开发管理模式,旨在通过整合跨部门资源,实现产品的高效开发与上市。然而,在实际推行过程中,IPD项目管理面临着诸多风险,若处理不当,可能导致项目进度延迟、成本超支甚至项目失败。深入了解这些风险并制定有效的应对策略,对于保障IP...
华为IPD流程   19  
  华为作为全球知名的科技企业,其成功背后的管理模式备受关注。其中,IPD(集成产品开发)产品开发流程对华为的创新发展起到了至关重要的推动作用。IPD不仅仅是一种流程,更是一种先进的管理理念,它将产品开发视为一个系统工程,涵盖了从市场需求分析、产品规划、研发、生产到上市等多个环节,通过整合企业内外部资源,实现高效、协同的产...
IPD流程中PDCP是什么意思   19  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用