【问题标题】:Restore string's original casing恢复字符串的原始外壳
【发布时间】:2016-10-26 01:54:29
【问题描述】:

如果我将一个字符串转换为小写,我如何将它转换回用户输入的原始字符串?我一直在寻找一个特定的 python 函数,它将字符串转换回原始字符串。我用过.swapcase(),但不幸的是它没有用。请记住,.lower() 是必需的。

【问题讨论】:

  • 为什么要在需要原始文件时覆盖?将其保存在不同的变量中。这看起来像是XY Problem 的情况。
  • 你不能,你丢失了小写的信息,你无法找回。正如@BhargavRao 所说,只需保留原件
  • 您希望这个功能如何工作?例如,它如何知道f("my string") 是否应该返回"MY STRING""My String""My StRiNg"
  • "我丢弃了一些信息后,如何找回我丢弃的信息?" - 你不能;您必须保留原始信息。

标签: python string


【解决方案1】:

不幸的是,没有此功能。与其质疑您为什么需要这样做,我建议您保留一个单独的列表来跟踪字符串中的哪些字符已被修改。有两种方法可以保留:

1.) 保留原始字符串中大写且已修改的索引列表。

2.) 保留一个长度为 n 的列表,其中 n 是字符串的长度,如果字符被 .lower 修改,则该值为 true。

使用这种风格,您可以编写一个辅助函数,该函数执行为您创建此列表的小写方法以及互补的非小写方法。或者,最合乎逻辑的是,您可以像大家所说的那样保存原始变量的一个实例。

【讨论】:

    【解决方案2】:

    你不能。 “AbC”和“aBc”在小写时都会变成“abc”。如果存在unlowercase 方法,它如何区分这两种情况?它应该返回“AbC”还是“aBc”?请记住,字符串对它们曾经包含的字母没有“记忆”。

    【讨论】:

      【解决方案3】:

      您无法将其转换回来。您可以做的是保留原始字符串,并为小写变量创建一个新变量:

      original = 'AbC'
      lowered = original.lower()
      

      您还可以将这两个值存储在一个字典中。例如,如果字符串是像“John Smith”这样的名称,并且您希望稍后能够同时使用“John Smith”和“john smith”,您可以这样做:

      name = {"original": "John Smith", "lowercase": "john smith"}
      
      print(name["original"])
      //prints 'John Smith'
      
      print(name["lowercase"])
      //prints 'john smith'
      

      Here's a working example

      我希望这对您想要完成的工作有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 2019-12-23
        • 2020-02-08
        相关资源
        最近更新 更多