我在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']
我需要做些什么才能获得所需的结果
答案 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']