推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LinusChen
V2EX  ›  Python

小白初学 Python ,有没有大佬可以帮忙简化一下代码

  •  
  •   LinusChen · Jul 22, 2021 · 2962 views
    This topic created in 1781 days ago, the information mentioned may be changed or developed.
    import pandas as pd
    import openpyxl
    #用来保存结果的列表
    two = []
    urltwo = []
    urltwoo = []

    three = []
    urlthree = []
    urlthreee = []


    four = []
    urlfour = []
    urlfourr = []

    five = []
    urlfive = []
    urlfivee = []

    letters = "abcdefghijklmnopqrstuvwxyz"

    #几位数,自己定
    ttwo = [a+b for a in letters for b in letters]
    tthree = [a+b+c for a in letters for b in letters for c in letters]
    ffour = [a+b+c+d for a in letters for b in letters for c in letters for d in letters]
    ffive = [a+b+c+d+e for a in letters for b in letters for c in letters for d in letters for e in letters]
    #域名后缀
    hz = "logistics.com.br"
    hz2 = "comex.com"

    #开始
    for k2 in ttwo:
    url2 = [k2 + hz]
    url22 = [k2 + hz2]

    urltwo.append(url2)
    urltwoo.append(url22)
    two = urltwo + urltwoo


    for k3 in tthree:
    url3 = [k3 + hz]
    url33 = [k3 + hz2]

    urlthree.append(url3)
    urlthreee.append(url33)
    three = urlthree + urlthreee


    for k4 in ffour:
    url4 = [k4 + hz]
    url44 = [k4 + hz2]

    urlfour.append(url4)
    urlfourr.append(url44)
    four = urlfour + urlfourr

    for k5 in ffive:
    url5 = [k5 + hz]
    url55 = [k5 + hz2]

    urlfive.append(url5)
    urlfivee.append(url55)
    five = urlfive + urlfivee

    #导出结果
    data = {'两个字母': two,'三个字母': three,'四个字母': four,'五个字母':five}
    frame = pd.DataFrame(data)
    frame.to_excel("E:\BaiduNetdiskWorkspace\个人\python\猜域名.xlsx")
    Supplement 1  ·  Jul 23, 2021
    #感谢大家的建议,修改了一下代码,但是还是有两个问题,烦请各位大佬指点迷津
    #问题 1:不知道怎么处理 letter_permutations 才能组成 ab,ac,ad 这样的组合
    #问题 2:怎么才能去掉生成的 excel 第一列默认的数字索引
    import string
    import itertools
    import pandas as pd
    import openpyxl
    import requests
    import sys

    #Lowercase_alphabet,小写字母表
    Lowercase_alphabet = string.ascii_lowercase

    url = []
    result_url = []

    #定义一个函数来生成 url
    def web_guessing(n,domain)
    n = input('请输入你想生成几位数的组合')
    domain = raw_input('请输入你想组合的域名')
    letter_permutations = list(itertools.permutations(Lowercase_alphabet,n))

    #不知道怎么处理 letter_permutations 才能组成 ab,ac,ad 这样的字符串组合

    #将字母组合和域名组成网址
    for permutations in letter_permutations:
    url = [permutations+domain]
    #检测状态码,储存有效的 url
    r=requests.get(url,timeout=5)
    code = r.status_code
    if code == 200:
    result_url.append(url)

    #进行数据转换,输出到 excel
    data = {'%d位字母的域名组合'%n : result_url}
    frame = pd.DataFrame(data)
    frame.to_excel("E:\BaiduNetdiskWorkspace\个人\python\域名\猜域名.xlsx")
    return("结果保存在:E:\BaiduNetdiskWorkspace\个人\python\域名\猜域名.xlsx")
    7 replies    2021-07-26 10:18:44 +08:00
    jaredyam
        1
    jaredyam  
       Jul 22, 2021
    你这已经不是简化的问题了,看了一半,提出两点提醒:
    1. 让变量名具有一定含义
    2. letters 这个变量可以通过标准库 import string; string.ascii_lowercase 进行调用
    wlsnx
        2
    wlsnx  
       Jul 23, 2021
    你可以试试 itertools.product
    ttwo = [''.join(chars) for chars in product(letters, repeat=2)]
    或者用 ttwo * letters 去生成 tthree
    tthree = [char + word for char in letters for word in ttwo]
    或者用 letters * two 去生成 three
    three = [[char + url[0]] for char in letters for url in two],这里顺序会不一致,如果要顺序一致,可以用 letters * two[0:len//2] + letters * two[len//2:]
    princelai
        3
    princelai  
       Jul 23, 2021
    应该是用排列吧,from itertools import permutations

    字符串相加可以放到 dataframe 里批量去加,这样比在循环里加然后 append 快很多
    RichXu
        4
    RichXu  
       Jul 23, 2021
    这个命名看得我脑阔疼
    xingheng
        5
    xingheng  
       Jul 24, 2021
    楼主你先了解一下 markdown code block 再说。
    Chares
        6
    Chares  
       Jul 25, 2021
    @RichXu 看了两眼直接翻到评论区看不下去了
    LinusChen
        7
    LinusChen  
    OP
       Jul 26, 2021
    @xingheng 我去学了下 markdown,感觉发现新大陆了,但是帖子删不了只能保持现状了。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3280 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 11:19 · PVG 19:19 · LAX 04:19 · JFK 07:19
    ♥ Do have faith in what you're doing.