fr是什么意思?

文章介绍了Python3.6引入的fr-string,它结合了f-string的格式化功能和r-string的原生字符处理,特别强调了如何通过fr前缀保留字符串中的反斜杠和其他特殊字符,如在文件路径和正则表达式中的应用。
摘要由CSDN通过智能技术生成

fr 是 Python 3.6 引入的一种新的字符串字面量前缀,它是 f-string (formatted string literals) 和 r-string (raw string literals) 的组合。

简单来说:

  1. f'引入了 f-string 格式化功能,可以在字符串中嵌入任意的 Python 表达式。
  2. r'引入了 raw string 功能,可以保留字符串中的原始字符,不进行任何转义。
  3. fr'就是将这两个功能结合在一起使用。

使用 fr' 可以让你在格式化字符串的同时,也保留字符串中的原始格式,比如反斜杠等。这在某些情况下会很有用,比如处理文件路径时。

例如:

file_path = fr'D:\Project\pyskl-main\pyskl-main\data\Weizmann\{jsonpath}'
print(file_path)

上面的代码会输出一个包含文件路径的字符串,并且反斜杠不会被转义。

总之, fr' 是 Python 3.6 引入的一个方便的字符串字面量前缀,可以帮助开发者更好地处理包含特殊字符的字符串。

就是说加上fr之后,反斜杠不会被理解为转义

使用 fr' 前缀可以确保字符串中的反斜杠不会被Python解释器当作转义字符。

在Python中,反斜杠\通常用作转义字符,比如\n表示换行,\t表示制表符。但是在处理文件路径或者正则表达式时,我们需要保留反斜杠本身的字面意义。

以下面这个例子来说明:

# 不使用fr前缀
file_path = 'D:\Project\pyskl-main\pyskl-main\data\Weizmann\test.txt'
print(file_path)
# 输出: 'D:\Project\pyskl-main\x0aman\data\Weizmann\test.txt'
# 注意\x0a被解释为换行符

# 使用fr前缀
file_path = fr'D:\Project\pyskl-main\pyskl-main\data\Weizmann\test.txt' 
print(file_path)
# 输出: 'D:\Project\pyskl-main\pyskl-main\data\Weizmann\test.txt'
# 反斜杠被原样保留

可以看到,使用 fr' 前缀后,反斜杠不再被当作转义字符处理,而是被原样保留下来。这在处理文件路径、正则表达式等需要保留特殊字符的场景下非常有用。

总之,fr' 是一种很方便的字符串字面量前缀,可以让你在使用 f-string 格式化的同时,也能够保留字符串中的原始格式。

\x0a是啥?

\x0a是十六进制表示的换行符(newline)。

在 Python 字符串中,\x0a是一个转义字符序列,表示单个字节的十六进制值为0x0a的字符。这个十六进制值对应于ASCII码中的换行符(LF, Line Feed)。

具体来说:

  • \x0a中的\x表示这是一个十六进制转义序列。
  • 0a是十六进制数字,代表十进制的10
  • 所以\x0a表示一个ASCII值为10的字符,也就是换行符。

在字符串中使用\x0a可以表示一个换行符,等同于使用\n。例如:

print('Line 1\x0aLine 2')
# 输出:
# Line 1
# Line 2

需要注意的是,在不同的系统中,换行符的表示可能会有所不同。Windows 系统通常使用\r\n来表示换行,而Unix/Linux 系统则使用\n。所以在处理跨平台的文本时,需要注意换行符的表示方式。

总之,\x0a是 Python 字符串中表示换行符的一种十六进制转义序列。它和\n具有相同的功能,可用于插入换行符。

\pyskl-main为什么解释为\x0a

\pyskl-main解释为\x0a是因为在 Python 字符串中,\p是一个无效的转义序列。

在 Python 中,反斜杠\后面必须跟一个有效的转义字符,才能被正确解释。比如\n表示换行符,\t表示制表符等。但是\p并不是 Python 中定义的任何转义字符,因此会被 Python 解释器认为是无效的。

当 Python 遇到无效的转义序列时,它会尝试去解释剩下的字符。在你的例子中,\p后面跟着yskl-main。Python 无法将yskl-main解释为任何有意义的转义字符,所以它会将\y解释为一个未知的转义字符。

由于 Python 没有\y这个转义字符,它会使用默认的解释方式,即将\y解释为ASCII值为10的字符,也就是换行符\x0a

因此,\pyskl-main在 Python 中会被解释为\x0askl-main。这是 Python 字符串处理的一个特性,当遇到无效的转义序列时,它会尝试去解释剩下的字符,这可能会导致一些意料之外的结果。

为了避免这种情况,最好使用 raw string 或 f-string 这样的字符串字面量,它们可以避免字符串中的反斜杠被解释为转义字符。比如使用fr'D:\pyskl-main\pyskl-main\data\Weizmann\test.txt'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值