小白初学 Python ,有没有大佬可以帮忙简化一下代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 2021-07-22 22:37:31 +08:00 2686 次点击
    这是一个创建于 1614 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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")
    第 1 条附言    2021-07-23 18:02:50 +08:00
    #感谢大家的建议,修改了一下代码,但是还是有两个问题,烦请各位大佬指点迷津
    #问题 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 条回复    2021-07-26 10:18:44 +08:00
    jaredyam
        1
    jaredyam nbsp;
       2021-07-22 23:34:44 +08:00
    你这已经不是简化的问题了,看了一半,提出两点提醒:
    1. 让变量名具有一定含义
    2. letters 这个变量可以通过标准库 import string; string.ascii_lowercase 进行调用
    wlsnx
        2
    wlsnx  
       2021-07-23 01:05:39 +08:00
    你可以试试 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  
       2021-07-23 10:24:29 +08:00
    应该是用排列吧,from itertools import permutations

    字符串相加可以放到 dataframe 里批量去加,这样比在循环里加然后 append 快很多
    RichXu
        4
    RichXu  
       2021-07-23 11:08:17 +08:00
    这个命名看得我脑阔疼
    xingheng
        5
    xingheng  
       2021-07-24 12:07:00 +08:00
    楼主你先了解一下 markdown code block 再说。
    Chares
        6
    Chares  
       2021-07-25 20:52:55 +08:00
    @RichXu 看了两眼直接翻到评论区看不下去了
    LinusChen
        7
    LinusChen  
    OP
       2021-07-26 10:18:44 +08:00
    @xingheng 我去学了下 markdown,感觉发现新大陆了,但是帖子删不了只能保持现状了。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     909 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 22:03 PVG 06:03 LAX 14:03 JFK 17:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86