python - 用python快速处理数据?

标签 python

我有一个以下格式的文件:

 [s1,s2,s3,s4,...] SOME_TEXT
 (per line)

例如:

 [dog,cat,monkey] 1,2,3
 [a,b,c,d,e,f] 13,4,6

包含括号。

假设我有另一个这样的字段,其中包含两行:

 [banana,cat2,monkey2] 1,2,3
 [a2,b2,c2,d,e,f] 13,4,6

我想获取这种形式的两个文件并按以下方式对齐它们:

 [dog^banana,cat^cat2,monkey^monkey2] 1,2,3
 [a^a2,b^b2,c^c2,d^d2,e^e2,f^f2] 13,4,6

同时确保相应行(例如1、2、3和13、4、6)中的“SOME TEXT”相同,并且每个相应行中括号中的元素数量相同。什么是快速紧凑的方法来做到这一点?

谢谢。

最佳答案

def read_file(fp,hash):
    for l in fp:
        p = l[1:].find(']')
        k = l[p+3:-1]
        v = l[1:p+1].split(",")
        if k not in hash:
            hash[k] = v
        else:
            hash[k] = zip(hash[k], v)

hash = {}

for fname in ('f1.txt', 'f2.txt'):
    with open(fname) as fp:
        read_file(fp, hash)

for k,v in hash.items():
    print "[{0}] {1}".format(",".join("^".join(vv) for vv in v), k)

这是执行此操作的基本方法,如果您需要按照读取顺序排列文件中的行,则需要做更多的工作。

这是我得到的输出:

[a^a2,b^b2,c^c2,d^d,e^e,f^f] 13,4,6
[dog^banana,cat^cat2,monkey^monkey2] 1,2,3

编辑:

这还假设每个即。 13,4,6 在文件中出现一次。如果它可以出现多次,则必须将 hash[k] = zip(hash[k],v) 更改为更复杂的内容,例如

if k not in hash:
    hash[k] = [[vv] for vv in v]
else:
    for i,vv in enumerate(v):
        hash[k][i].append(vv)

关于python - 用python快速处理数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046641/

相关文章:

python - 使用新日期索引和带有标题子字符串的新列创建 Pandas DataFrame?

Python urllib2 基本认证问题

python - sklearn : how to get coefficients of polynomial features

python - 三元运算符有异常(exception)吗?

python - 更改 Django 外键中的 UUID 格式

python - 树莓派 Python wit.ai 使用

python - 随机交换两列 pandas dataframe 的元素

python - urllib.error.URLError : <urlopen error no host given> python 3

python - 如何在给定特征集作为字典的情况下实现交叉验证和随机森林分类器?

javascript - Webpack:Django 中的 "Uncaught SyntaxError: Unexpected token <"