将列表替换回python中的原始列表

时间:2018-03-07 04:45:27

标签: python pyspark

我在list下面有python/pyspark,如下所示。我想将列表中的特殊字符转换为其他字符。

我在下面做过。

cols = ['abc test', 'test*abc', 'eng)test', 'abc_&test']

reps = [(' ', '_&'), ('(', '*_'), (')', '_*'), ('{', '#_'), ('}', '_#'), (';', '_##'), ('.', '_$'), (',', '_$$'), ('=', '_**')]

replacedCols = []
for col in cols:
    for x in reps:
        col = col.replace(x[0], x[1])
    replacedCols.append(col)

checkCols = replacedCols[:]
for index, col in enumerate(replacedCols):
    checkCols[index] = ''
    replacedCols[index]
    if col in checkCols:
        replacedCols[index] = col.replace('_', '__')

新名单如下:

New_cols = ['abc__&test', 'test*abc', 'eng_*test', 'abc_&test']

现在我想将此列表转换回原始列表:

new_cols = ['abc__&test', 'test*abc', 'eng_*test', 'abc_&test']

reps = (('_&', ' '), ('*_', '('), ('_*', ')'), ('#_', '{'), ('_#', '}'), ('_##', ';'), ('_$', '.'), ('_$$', ','), ('_**', '='))


replaced_ColsCols = []
for col in new_cols:
    for x in reps:
        col = col.replace(x[0], x[1])
    replaced_Cols.append(col)

check_Cols = replaced_Cols[:]
for index, col in enumerate(replaced_Cols):
    check_Cols[index] = ''
    replaced_Cols[index]
    if col in check_Cols:
        replaced_Cols[index] = col.replace('__', '_')

print(replaced_Cols)

我得到的结果如下,与原始列表

不同
old_cols = ['abc_ test', 'test*abc', 'eng)test', 'abc test']

我需要做些什么才能获得所需的结果

1 个答案:

答案 0 :(得分:2)

我看到这是来自this的持续帖子,你试图扭转那里作为答案提出的想法。

在该帖子中,您已将['abc test', 'test*abc', 'eng)test', 'abc_&test']更改为['abc__&test', 'test*abc', 'eng_*test', 'abc_&test'],并且您想要撤消更改。

您不必反转更改,因为您已有原始列表

如果您想学习新内容,这里有适合您的工作代码

new_cols = ['abc__&test', 'test*abc', 'eng_*test', 'abc_&test']
reps = (('_&', ' '), ('*_', '('), ('_*', ')'), ('#_', '{'), ('_#', '}'), ('_##', ';'), ('_$', '.'), ('_$$', ','), ('_**', '='))

for index, col in enumerate(new_cols):
    if '__' in col:
        new_cols[index] = col.replace('__', "_")

replaced_ColsCols = []
checkCols = new_cols[:]
for col in new_cols:
    if new_cols.count(col) > 1:
        checkCols.remove(col)
    if col in checkCols:
        for x in reps:
            col = col.replace(x[0], x[1])
    replaced_ColsCols.append(col)

print replaced_ColsCols

应该给你

['abc test', 'test*abc', 'eng)test', 'abc_&test']