免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3085 | 回复: 3

请教一个python的简单问题 [复制链接]

论坛徽章:
0
发表于 2016-06-16 11:00 |显示全部楼层
文件内容:

Sub Main
        crt.Screen.WaitForString "Select Mode: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input group: "
        crt.Screen.Send "19" & chr(13)
        crt.Screen.WaitForString "Input device: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input accounts: "
        crt.Screen.Send "4" & chr(13)
        crt.Screen.WaitForString "assword: "
        crt.Screen.Send "12344" & chr(13)
End Sub

我希望修改 crt.Screen.WaitForString "Input device: " 下的 crt.Screen.Send "1" & chr(13) 这行中 "1" 这个数值为2或者别的数字,1这个值是会变化的,但肯定在 这一行。同时需要修改 crt.Screen.WaitForString "assword: " 这行下 crt.Screen.Send "12344" & chr(13) 中的 12344 这个值,同样这个值是会变化的。

请教我怎么才能只修改该这两行的值?

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-23 06:20:0015-16赛季CBA联赛之八一
日期:2017-10-26 17:58:2515-16赛季CBA联赛之北控
日期:2017-11-02 10:50:56
发表于 2016-06-17 15:38 |显示全部楼层
直接写个,若需要函数化,可自行稍加修改。

with open('C:\\Users\\guogz\\Desktop\\1.txt') as f1, open('C:\\Users\\guogz\\Desktop\\2.txt', 'w') as f2:
    cont = f1.readlines()
    temp = [list(i) for i in enumerate(cont)]
    for ln in temp:
        if ln[1].find('Input device:') >= 0:
            lnum1 = ln[0] + 1
        elif ln[1].find('assword:') >= 0:
            lnum2 = ln[0] + 1

    orig_str1, orig_str2 = temp[lnum1][1].split()[1],  temp[lnum2][1].split()[1]
    temp[lnum1][1] = temp[lnum1][1].replace(orig_str1, '"2"')
    temp[lnum2][1] = temp[lnum2][1].replace(orig_str2, '"8888"')
    new_cont = [l[1] for l in temp]
    f2.writelines(new_cont)

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2016-06-22 20:15 |显示全部楼层
  1. import fileinput

  2. modify, next_line = {"Input device: " : 123, "assword: " : 456}, 0

  3. for i in fileinput.input("c", inplace=True):
  4.     tmp = i.split('"')
  5.     if next_line:
  6.         tmp[1] = str(modify[next_line])
  7.         next_line = 0
  8.     elif len(tmp)>1 and tmp[1] in modify:
  9.         next_line = tmp[1]
  10.     print '"'.join(tmp),
复制代码

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
发表于 2016-07-05 14:18 |显示全部楼层
文件内容:

Sub Main
        crt.Screen.WaitForString "Select Mode: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input group: "
        crt.Screen.Send "19" & chr(13)
        crt.Screen.WaitForString "Input device: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input accounts: "
        crt.Screen.Send "4" & chr(13)
        crt.Screen.WaitForString "assword: "
        crt.Screen.Send "12344" & chr(13)
End Sub

我希望修改 crt.Screen.WaitForString "Input device: " 下的 crt.Screen.Send "1" & chr(13) 这行中 "1" 这个数值为2或者别的数字,1这个值是会变化的,但肯定在 这一行。同时需要修改 crt.Screen.WaitForString "assword: " 这行下 crt.Screen.Send "12344" & chr(13) 中的 12344 这个值,同样这个值是会变化的。

请教我怎么才能只修改该这两行的值?


text = """
Sub Main
        crt.Screen.WaitForString "Select Mode: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input group: "
        crt.Screen.Send "19" & chr(13)
        crt.Screen.WaitForString "Input device: "
        crt.Screen.Send "1" & chr(13)
        crt.Screen.WaitForString "Input accounts: "
        crt.Screen.Send "4" & chr(13)
        crt.Screen.WaitForString "assword: "
        crt.Screen.Send "12344" & chr(13)
End Sub
"""
#修改 crt.Screen.WaitForString "Input device: " 下的 crt.Screen.Send "1" & chr(13) 这行中 "1" 这个数值为2或者别的数字,1这个值是会变化的,但肯定在 这一行。
text1,text2=text.split("Input device:",1)
part1,part2=text2.split('crt.Screen.Send "',1)
number,left=part2.split('"',1)
text = text1+"Input device:"+part1+'crt.Screen.Send "'+ '2或者别的数字' + '"' + left

....

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP