【问题标题】:Need to return only one cell based on the search只需根据搜索返回一个单元格
【发布时间】:2020-10-07 21:46:05
【问题描述】:

我正在尝试在 python 中进行 maltego 转换,我需要的是根据此搜索仅返回一个单元格

@staticmethod
   def get_names(search_person_name):
    matching_names = []
    with open("examplefile.csv") as f:
        for ln in f.readlines():
            person_name, data = ln.split(",", 1)
            if person_name.strip() == search_person_name.strip():
                matching_names.append(data.strip())
    return matching_names

.csv 文件由以下列组成:

person_name,data,streetaddress

我想,根据搜索条件,它只会返回单元格 data

不是包含streetaddress列

的行

有什么想法吗?

【问题讨论】:

  • 作为简化,使用csv 模块而不是手动拆分逗号?这还将为您处理诸如引用的列之类的事情...

标签: python csv transform


【解决方案1】:

这是一种方法: 替换

    person_name, data = ln.split(",", 1)

    person_name, data, unwanted_column = ln.split(",", 2)

这会创建一个您从不使用的额外变量,但其目的是将其与您想要的数据隔离开来。

【讨论】:

    【解决方案2】:

    您的“数据”值为“数据,街道地址”的原因是因为您将拆分功能设置为仅执行 1 次拆分。

    person_name, data = ln.split(",", 1)
    

    split() 函数的第二个参数设置最大分割数。由于您将其设置为 1,因此它只会拆分它看到的第一个“,”。由于文件的内容是“person_name,data,streetaddress”,那么变量就变成了:

    person_name = person_name
    data = data,streetaddress
    

    @TBaggins 提到的最简单的解决方法是将该行更改为:

    person_name, data, streetaddress = ln.split(",", 2)
    

    这会从行中拆分 2 个并将这 3 个值放在它们各自的变量中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多