Python中字符串分割出现问题

3

我正努力使用Python来拆分字符串,但需要解析的文本文件有些棘手:

  • 该文本文件是一个逗号分隔的数据文件

我已经尝试了以下步骤:

import fileinput
for line in fileinput.input("sample.txt"):
data = line.strip().split(',')
pass

这应该能完成工作,对吧?
现在是棘手的部分:我有一些包含逗号的字段,就像下面这个例子:
"(CONTRACTS OF 5,000 BUSHELS)"

使用我的代码,脚本还将此字段分为两个部分。
如何要求Python使用逗号作为分隔符,但不在引号内时使用?
感谢您提前的回答。
Crak

你的代码示例中为什么有一个 pass - Michael J. Barber
似乎答案就在问题中:“文本文件是一个逗号分隔的数据文件。” 我之前因为文件扩展名是“.txt”而感到困惑...浪费了一天时间,最终却什么都没做成 :) 谢谢。 - Crak
3个回答

10

您的数据采用了一种很常见的格式——逗号分隔值(CSV)。如果不想再编写一个解析器,可以考虑使用内置的csv模块。


看起来是很好的建议,但在这种情况下使用csv模块的示例确实会改善这个答案。 - Eric Wilson
3
官方文档中有很多例子,我认为在这里复制其中一个并没有什么不同。 - Ferdinand Beyer
也许是因为我从未使用过csv库,经过几分钟的阅读文档后仍然感到困惑。你说得对,你提供了必要的信息。但如果这是我的问题,那么这会有所不同。 - Eric Wilson
@FarmBoy:在Stack Overflow上已经有数百个关于CSV的问题了。请搜索Python和CSV。在这个问题上重复任何那些答案都没有意义。 - S.Lott
1
@FarmBoy:请点击我的答案中的 csv 模块链接,向下滚动几行到第一个绿色框中查看非常简单的示例。并且,请礼貌一点,我完全同意 @S.Lott 的评论。 - Ferdinand Beyer
1
@FerdinandBeyer 谢谢。已删除评论。 - Eric Wilson

5

应使用csv处理CSV文件。


4

您可以使用 csv 模块

import csv

with open('sample.txt', 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        # each row is a list of items,
        # corresponding to each row in your file,
        # including commas for quoted items

如果这个答案中的评论部分包含有意义的内容,我会点赞它。 - Eric Wilson
问题没有说明他对它做什么。 - Corey Goldberg
他正在逗号上分割,但不会在引号内的逗号上进行分割。 - Eric Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接