作为回答的另一个问题的后续跟进,我现在有以下格式的数据:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个python函数(可能是for循环),它实现了以下输出:
34:1
27:1 33:1 36:1
20:1 32:1
Run Code Online (Sandbox Code Playgroud)
注意第一个数字是它曾经在40长度长位模式中所具有的位置.第二个数字(冒号后)是原始数字"1".
我是python的新手,并在这里发布我的问题,这对我学习python有很大帮助.所以,如果你有任何想法如何做到这一点,请随时回复.再一次,这不是功课,我试图创建一个情绪分析程序,我需要这种数据格式的SVM.另一种格式是TiMBL.
编辑
因为有些行只包含0.令人敬畏:)的输出回答如下,在输出文本文件中产生空行.如何添加防止这种情况发生的功能?或者创建一个读取文件的新函数,并删除换行符?我有一种感觉会删除所有这些,这可能会给我带来麻烦.
>>> strs = """0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0"""
>>> for x in strs.splitlines():
print " ".join("{}:{}".format(i,1) for i,y in enumerate(x.split(), 1) if y=='1')
...
34:1
27:1 33:1 36:1
20:1 32:1
Run Code Online (Sandbox Code Playgroud)
对于文件:
>>> with open("abc") as f:
for line in f:
strs = " ".join("{}:{}".format(i,1) for i,y in enumerate(line.split(), 1) if y=='1')
if strs:
print strs
...
34:1
27:1 33:1 36:1
20:1 32:1
Run Code Online (Sandbox Code Playgroud)
其中abc包括:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |