【问题标题】:How to compare column value in csv如何比较csv中的列值
【发布时间】:2018-05-10 07:39:09
【问题描述】:

我倾向于比较两列值,例如:

 name        columnA     columnB
hahaha        [123]        123

一个带方括号,一个不带方括号。我想验证括号(123)中的内容是否与B列(123)下的值相同

首先读取这些值:

with open('2.csv','rb') as csvfile:
reader3 = csv.DictReader(csvfile)
for row in reader3:
    if row['name']== 'hahaha':
        b=row['columnA']
        c=row['columnB']  

我尝试通过以下方式从括号中提取内容:

e = re.findall(r'\[([^]]*)\]',b)

我打印 c 和 e。输出为['123'] [123] 现在我不知道如何制作 ['123'] = [123]

有什么想法吗?谢谢!

【问题讨论】:

  • 为什么不:b = row['columnA'].strip('[]')?然后你可以检查b == c
  • 您的正则表达式绝对不正确。您应该使用这样的捕获组 - r'\[(.*?)\]',而不是您现在的做法。
  • 另外,re.findall 的结果被分配给c,覆盖旧的c 值。你是故意的吗?
  • 我改了这是我的错误@cᴏʟᴅsᴘᴇᴇᴅ

标签: python csv python-2.x


【解决方案1】:

如果你想从字符串中删除大括号,你可以使用str.strip -

>>> '[1234]'.strip('[]')
'1234'

至于您当前的方法,您的正则表达式是这里的罪魁祸首。我不确定你认为它做了什么,但它肯定是不对的。一种可能的正则表达式解决方案是 -

>>> re.match(r'\[(.*?)\]', '[1234]').group(1)
'1234'
\[      # opening brace 
(.*?)   # match-all capture group
\]      # closing brace 

【讨论】:

  • 非常有用的答案!现在一切正常!谢谢你的朋友!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多