【问题标题】:Multiline String to raw string Python多行字符串到原始字符串 Python
【发布时间】:2020-12-02 04:30:32
【问题描述】:

我有一个多行字符串。我需要在声明变量时不使用 r' ' 将该字符串转换为原始字符串。我的主要动机是转换行 "print("Entered Name: {}\n".format(str1))" 中的 \n 而不是转换多行字符串中的其他 \n。

string='''# Initializing Function named main()
def main () :
    str1 = None
    str2 = None
    age=16
    str1=str(input())
    str2=str(input())
    print("Entered Name: {}\n".format(str1))
    print("Entered Website:{}".format(str2))
# Calling the main Function
main()'''

注意:我无法使用 string=r' ' ' # Initializing Function named 主()...

Code Thant 我试过但没用:

string='''# Initializing Function named main()
def main () :
    str1 = None
    str2 = None
    age=16
    str1=str(input())
    str2=str(input())
    print("Entered Name: {}\n".format(str1))
    print("Entered Website:{}".format(str2))
# Calling the main Function
main()'''
string=r"{}".format(string)
string = string.replace(r'\n', '')
print(string)

谢谢!

【问题讨论】:

  • “我需要在声明变量时不使用 r' ' 将该字符串转换为原始字符串” - 听起来您误解了“原始字符串”是什么。原始字符串文字是一种编写字符串的方式,它禁用转义序列处理。您无法撤消已经发生的转义序列处理,也无法将现有字符串转换为原始字符串。
  • 为什么你认为你不能使用r前缀?
  • r 是可行的方法或双反斜杠。否则\n 无法与换行符区分开来。
  • 实际上,我通过函数(def)获取字符串变量,这就是为什么我无法自己添加 r 前缀
  • 无论如何,r 不会更改该字符串中的任何内容...

标签: python python-3.x string replace python-re


【解决方案1】:

作为I already said the last time you asked 您不能创建没有r 前缀的原始字符串。也就是说,根据定义,是什么使它成为原始字符串。您可以使用普通的非原始字符串,然后转义转义:

string='''# Initializing Function named main()
    ...
    print("Entered Name: {}\\n".format(str1))
    ...
main()'''

注意额外的反斜杠,这使得字符串在字符串中使用实际的反斜杠,后跟n,而文字换行符仍然是换行符,允许您替换一个而不影响另一个。

【讨论】:

  • @YashMakan:在文本编辑器中单击 \n 之前并点击反斜杠键。
  • @user2357112supportsMonica 请理解,查询中给出的字符串只是一个示例。我通过函数获取字符串,因此代码中的任何位置都可以有任何带有 \n 的字符串。
  • @YashMakan:“通过函数获取字符串”非常模棱两可。如果字符串最终来自某处的字符串文字,请将r 放在那里。如果它不是来自字符串文字,那么几乎可以肯定无论如何都没有转义序列处理可以撤消。
  • 详细说明@user2357112supportsMonica,如果您有一个字符串已经将格式化换行符与“代码”换行符混合在一起,那么您的问题是它们都是换行符,无法以任何方式区分.您不能追溯地告诉 Python 其中一些是“真正的”换行符,而有些则不是通过一些自定义解析器(远远超出 StackOverflow 的范围)运行它们的,这些解析器可以从上下文中分辨出每个是哪一个(在这种情况下,您基本上需要从头开始重新发明 Python 解析器,即便如此,当代码本身具有多行字符串时,它也是启发式的)。
猜你喜欢
  • 2020-07-12
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2019-11-02
  • 2011-05-23
相关资源
最近更新 更多