首页 > 解决方案 > 如果字符串包含每一行的特定值,则替换字符串

问题描述

我试图解析在不同行上包含长字符串的 csv。如果字符串包含特定值,我想为发生的每一行替换每个长字符串。

为什么我要替换长字符串是因为 csv-file 会破坏字符串以适应行。

csv 文件的示例是:

number     |      payload
1230          00023030303030303030303030303030...
1234          00033030303030303030330303030303...
1236          30303030303030004303030303030303...
1238          0005303030...
1240          (blank)
1241          (blank)
1248          0006303030...

长字符串中的以下 uniq 四位数值是十六进制形式 1-100(十六进制 1-63)的计数器。

因此,如果该行包含计数器的值,我尝试替换该值,但没有成功。

问题是字符串中的四个 uniq 值可能与计数器不匹配,因此将其替换为粗略值。

def stringconv(filefind)->str:
    strcount=pd.read_csv(filefind, sep='\t', usecols=[2], na_filter=False, names=col_name)
    for i in range(256):
        counter = "{:02x}".format(i)
        hxstr = strcount["payload"].str.match("00" + str(counter))
        hexstring = strcount[strcount["payload"].str.match("00" + str(counter))]
        print(hexstring)
        j = ("00" + str(counter))
        for x in hxstr:
            if x == True:
                strcount.replace(x,j, inplace=True)

如上所示的现有文件应该看起来更像:

number     |     payload
1230             0002
1234             0003
1236             0004
1238             0005
1240             (blank)
1241             (blank)
1248             0006
...              ...

标签: pythonpandascsvparsing

解决方案


推荐阅读