python - 将基于列的字符串替换为多个预定义值 - Python

标签 python string python-3.x python-2.7 list

我对在 python 中实现以下逻辑的方法有点困惑。我需要专家的建议来选择方法。

我必须用某些列中的预定义值替换字符串。 例如

|是分隔符

输入:

ABCD|NewYork|800|TU
XYA|England|589|IA

输出:

QWER|NewYork|800|PL
NHQ|England|589|DQ

预定义字典:

Actual Value  : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Replace Value : QWERTYASDFGHNBVCXZOPLKMNHY

所以,如果值为 ABCD,我应该得到 QWER。如果是 TU 那么应该用 PL 替换它。这些值可以是随机的。

我的方法如下

  1. 阅读一行,然后转到第 1 列
  2. 读取每个字符并使用替换值进行一一替换
  3. 转到第 4 列,然后读取每个字符并逐一替换
  4. 转到下一行,依此类推......

我觉得这可能是糟糕的编码方式。与上述方法相比,还有什么不同的方法吗?请建议一种方法。

不同文件的列可能不同。它应该是动态的

最佳答案

您可以使用str.translatestr.maketrans让您的生活变得更加轻松:

In [1]: fnd = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   ...: rpl = 'QWERTYASDFGHNBVCXZOPLKMNHY'
   ...: trns = str.maketrans(fnd, rpl)

In [2]: 'ABCD'.translate(trns)
Out[2]: 'QWER'

In [4]: 'UV'.translate(trns)
Out[4]: 'LK'

关于python - 将基于列的字符串替换为多个预定义值 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49900511/

相关文章:

python - 为什么我系统安装的numpy没有matmul?

python - Matplotlib 标记可快速绘制和渲染

java - 如何分解字符串?

string - TCL:如何转义使用大括号 '{' 引用的字符串中的单个大括号 '{...}' ?

string - 在 Perl 中使用 Spreadsheet::ParseExcel,但需要帮助

python - 将 Python 字节转换为 "unsigned 8 bit integer"

python - 堆栈并评估后缀

python - 浮点布局和舍入

python - 如何纠正此 Damerau-Levenshtein 实现中的错误?

python - 如何将漂亮的 soup 标签内部 html 存储为字符串