【问题标题】:How to return row that has string inside, instead of matching the whole string?如何返回包含字符串的行,而不是匹配整个字符串?
【发布时间】:2018-12-11 05:01:19
【问题描述】:

我有这个代码叫get.py

import urllib2, base64, csv, sys  
from sys import argv

request = urllib2.Request("https://example.com/test.csv")
response = urllib2.urlopen(request)
data = response.read()
sheet = csv.read(data.split('\n'),delimiter=',')

def main():
    for row in sheet:
        if arg in row:
            print "Host"+row[5] + "IP"+row[6]

if __name__ == "__main__":
    main()

例如,当我运行./get.py 127 时,我想获取所有包含127 的IP。

【问题讨论】:

  • 你能解释一下csv文件的格式吗?此外,要嵌入代码,只需在每行代码前放置 4 个空格;它目前作为引用嵌入。
  • csv 只是普通的 csv,其 IP 为 127.0.0.1、127.0.0.3、127.0.0.2,我只想运行 ./get.py 127 并获取其中包含 127 的每个结果跨度>

标签: python


【解决方案1】:

您当前检查字符串参数是否在列表中,而您应该检查列表中的特定元素 (它似乎是索引 6 处的元素):

import urllib2, base64, csv, sys
from sys import argv

request = urllib2.Request("https://example.com/test.csv")
response = urllib2.urlopen(request)
data = response.read()
sheet = csv.read(data.split('\n'),delimiter=',')

def main(arg):
    ip = arg[1]
    for row in sheet:
        if ip in row[6]:
            print("Host" + row[5] + "IP" + row[6])

if name == "main":
    main(argv)

【讨论】:

  • 如果 ip in row[6],我的索引超出范围:
  • 这意味着 csv 文件的列数比您想象的要少。尝试在屏幕上打印len(row) 并查看每行实际有多少条目。
  • 我输入 len(row) 时得到 37
  • 您需要手动检查 csv,因为它绝对是与您预期不同的格式。你需要看看格式是this还是this,因为代码是为第二种情况编写的。
  • 酷,只需检查空行,如 pgngp 的解决方案所示。
【解决方案2】:

你可以试试这个:

import urllib2, base64, csv, sys
from sys import argv

request = urllib2.Request("https://example.com/test.csv")
response = urllib2.urlopen(request)
data = response.read()
sheet = csv.reader(data.split('\n'), delimiter=',')

def main(arg):
    for row in sheet:
        if len(row) == 0:
            continue

        if arg in row[6]:
            print("Host" + row[5] + ", IP" + row[6])

if __name__ == "__main__":
    main(argv[1])

我用我的 python 2.7 解释器尝试了这个,它似乎可以工作。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2015-02-20
    • 2018-02-28
    • 2019-06-05
    • 2013-08-16
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多