求一个简单的python脚本

誰伴我闖荡 2011-02-24 01:23:22
昨晚我自己写了一个脚本,虽然功能没问题,但是感觉写的不好,今天求高手写一个脚本,我好参考下

谢谢了.

问题是:

API:KERNEL32.dll:AddAtomW
LPWSTR

API:KERNEL32.dll:AllocConsole
VOID

API:KERNEL32.dll:BackupRead
HANDLE
LPDATA
DWORD
LPDATA
BOOL
BOOL
LPDATA

将上面的转化成
KERNEL32.dll:AddAtomW(LPWSTR)
KERNEL32.dll:AllocConsole(VOID)
KERNEL32.dll:BackupRead(HANDLE,LPDATA,DWORD,LPDATA,BOOL,BOOL,LPDATA)


即将前面的"API:"去掉,转换过后的空行去掉.每个参数后面有一个",",但是最后一个参数不要.
用括号把参数括起来

谢谢了!
...全文
216 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
javacode007 2011-02-24
  • 打赏
  • 举报
回复
都写得不错,我就不插手啦
luotuo512 2011-02-24
  • 打赏
  • 举报
回复
1.如果文件比较大还是不要用readlines吧
2.处理文本用“流式读入+状态机”是王道
[Quote=引用 4 楼 batmanlf 的回复:]

fin = open('r.txt', 'r')
buf = fin.read()
x = buf.split('\n\n')
y = [ i.split('\n') for i in x ]
out = [ i[0][4:]+'('+','.join(i[1:])+')' for i in y ]

用两个换行来分开每块
用一个换行分别分开每个字符串
去掉每块的一个字符串前4……
[/Quote]
batmanlf 2011-02-24
  • 打赏
  • 举报
回复
fin = open('r.txt', 'r')
buf = fin.read()
x = buf.split('\n\n')
y = [ i.split('\n') for i in x ]
out = [ i[0][4:]+'('+','.join(i[1:])+')' for i in y ]

用两个换行来分开每块
用一个换行分别分开每个字符串
去掉每块的一个字符串前4个字符 加()
我在我机子上运行可以
你可以按思路 写一次
李察德-泰森 2011-02-24
  • 打赏
  • 举报
回复
写的也不好,凑合看看吧。

#-*- coding: utf-8 -*-

fh = open("F:\\PythonSourceCode\\API.txt", "r")
api_para = {}
para_list = [line.strip("\n") for line in fh.readlines() if line.strip("\n")]
api_name = ""
for one in para_list:
if str(one).startswith("API:") and not str(one[4:]) in api_para.keys():
api_name = str(one[4:])
api_para[api_name] = []
elif api_name:
api_para[api_name].append(one)

for key, val in api_para.items():
print "%s(%s)"%(key, ",".join(val))
luotuo512 2011-02-24
  • 打赏
  • 举报
回复
写的代码粗鄙不堪啊,还请多指教。
f=open('apis.txt','r')
l=[]
api=''
while True:
line=f.readline()
if not line:
if api:
print api+'('+','.join(l)+')'
break
line=line.replace('\n','')
if line.startswith('API'):
l=[]
api=line[4:]
elif line:
l.append(line)
else:
print api+'('+','.join(l)+')'


apis.txt
API:KERNEL32.dll:AddAtomW
LPWSTR

API:KERNEL32.dll:AllocConsole
VOID

API:KERNEL32.dll:BackupRead
HANDLE
LPDATA
DWORD
LPDATA
BOOL
BOOL
LPDATA

iambic 2011-02-24
  • 打赏
  • 举报
回复
贴你的脚本。把你写的不好的地方指出来,才是最有帮助的。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧