为了账号安全,请及时绑定邮箱和手机立即绑定

如何基于单引号字符分隔项目 - 即 ['a','b','x,d'] => ab 'x,d'?

如何基于单引号字符分隔项目 - 即 ['a','b','x,d'] => ab 'x,d'?

万千封印 2021-11-02 20:02:53
我正在解析一个 csv 文件并提取所有数据并根据引号将它们分开。为简单起见,我以一个随机行从该文件输入:line = "'abc', 'sxy', 'lmo,por','zz'"期望输出:abcsxy'lmo,por'zz所需输出中的第 3 行是我对代码感到困惑的地方。如果我执行 replace("'","") ,那么我会丢失所有引号并被分离出来。我不确定如何在不丢失单引号的情况下对第 3 行值进行分组,而我需要为其他人去掉单引号 是否有为此的 Python 内置字符串函数。我不确定谁可以编写正则表达式,因为我对正则表达式解析很陌生。到目前为止我的代码:line = "'abc', 'sxy', 'lmo,por','zz'"def parse(line):    line = line.replace("'","")    a = line.split(',')    for word in a:        l.append(word)    print(l)我知道这是非常微不足道的,但我无法解决它。SO也没有类似的情况。欣赏任何指针,可以帮助我。
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

pythoncsv包具有一个quotechar参数,我认为它可以满足您的需求。作为一般经验法则,不要csv通过自己解析所有内容来处理文档,也不要使用正则表达式。


查看文档和相关讨论


这应该可以解决问题(我想您必须解析多行)。


lines = """ 'abc', 'sxy', 'lmo,por','zz'

'some,thing', 'some', thing""".splitlines()


for l in  csv.reader(lines, quotechar="'", delimiter=',', 

                    quoting=csv.QUOTE_ALL, skipinitialspace=True):

    print(l)


# ['abc', 'sxy', 'lmo,por', 'zz']

# ['some,thing', 'some', 'thing']


查看完整回答
反对 回复 2021-11-02
?
四季花海

TA贡献1811条经验 获得超5个赞

试试这个简单的:


line = "'abc', 'sxy', 'lmo,por','zz'"


def parse(line):

    li = []

    lines = line.split("',")

    for line in lines:

        word = line.replace("'", "").strip()

        print (word)

        li.append(word)

    return li

首先由 ' 分割,然后删除所有空格和单引号


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号