blackantt 发表于 2024-5-7 09:35:41

被这个替换给难住了?

原始字符串是cookie_path = "./BV1Xe4y1c7iX\srt\bilibili-cookies.txt",

下面代码中的替换该怎么写,windows中才不出错呢?
cookie_path = "./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
cookie_path1 =
os.system(f"""copy bilibili-cookies.txt {cookie_path1}""")

wp231957 发表于 2024-5-7 09:35:42

blackantt 发表于 2024-5-7 10:07
不能改原字符串。 要在原字符串的基础上改啊

import os

cookie_path = r"./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
a=cookie_path.replace("/","\\",1)
os.system(f"""copy {a}   wp.z""")

wp231957 发表于 2024-5-7 09:43:49

你期望的目标结果是啥啊

blackantt 发表于 2024-5-7 09:48:47

cookie_path = "./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
os.system(f"""copy bilibili-cookies.txt {cookie_path}""")

这代码执行不了啊,windows下会出错,就是 原始路径里的 正反斜杠在作怪。 怎么让上面的代码能正常执行啊

blackantt 发表于 2024-5-7 09:49:19

本帖最后由 blackantt 于 2024-5-7 09:50 编辑

wp231957 发表于 2024-5-7 09:43
你期望的目标结果是啥啊

cookie_path = "./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
os.system(f"""copy bilibili-cookies.txt {cookie_path}""")

这代码执行不了啊,windows下会出错,就是 原始路径里的 正反斜杠在作怪。 怎么把cookie_path里的正反斜杠规整一下,让第2句的代码能正常执行啊

wp231957 发表于 2024-5-7 10:05:57

blackantt 发表于 2024-5-7 09:49
cookie_path = "./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
os.system(f"""copy bilibili-cookies.txt ...

cookie_path = r".\BV1Xe4y1c7iX\srt\bilibili-cookies.txt"

试一下呢

blackantt 发表于 2024-5-7 10:07:08

wp231957 发表于 2024-5-7 10:05
cookie_path = r".\BV1Xe4y1c7iX\srt\bilibili-cookies.txt"

试一下呢

不能改原字符串。 要在原字符串的基础上改啊

blackantt 发表于 2024-5-7 10:34:40

wp231957 发表于 2024-5-7 10:13
import os

cookie_path = r"./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"


真神了,你在replace多加了个1就正常了。 我少个1就不行。谢谢。
1. 这个1是干啥的呢?
2. 那如果用正则,又改怎么弄呢?

wp231957 发表于 2024-5-7 10:42:19

blackantt 发表于 2024-5-7 10:34
真神了,你在replace多加了个1就正常了。 我少个1就不行。谢谢。
1. 这个1是干啥的呢?
2. 那如果用 ...

只替换第一个

blackantt 发表于 2024-5-7 10:54:47

wp231957 发表于 2024-5-7 10:42
只替换第一个

奇怪,替换结果 是.\BV1Xe4y1c7iX\srilibili-cookies.txt


但在程序中它又是正常的 .\BV1Xe4y1c7iX\bilibili-cookies.txt

wp231957 发表于 2024-5-7 10:56:59

blackantt 发表于 2024-5-7 10:54
奇怪,替换结果 是.\BV1Xe4y1c7iX\srilibili-cookies.txt




这咋了呢, 这就是正常的正确结果啊replace的第二个参数表面是双杠实际上就表示一个单杠的

blackantt 发表于 2024-5-7 11:01:50

wp231957 发表于 2024-5-7 10:56
这咋了呢, 这就是正常的正确结果啊replace的第二个参数表面是双杠实际上就表示一个单杠的

sorry, 彻底明白了, 关键要在原始串前加一个 r 。 要不然串里面有\s就出问题

谢谢

wp231957 发表于 2024-5-7 11:02:20

blackantt 发表于 2024-5-7 10:34
真神了,你在replace多加了个1就正常了。 我少个1就不行。谢谢。
1. 这个1是干啥的呢?
2. 那如果用 ...

正则也狠简单,原理是一样的

import os
import re

cookie_path = r"./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"
a=re.sub(r"\/",r"\\",cookie_path,1)
print(a)
os.system(f"""copy {a}   wp.z""")

blackantt 发表于 2024-5-8 08:46:51

wp231957 发表于 2024-5-7 11:02
正则也狠简单,原理是一样的

不明白为啥非要在 原始字符串   r"./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"前加r才行,   那以后只要用到 re.sub, replace 的时候都要给原始字符串前加 r吗?
如果要对文件作替换,文件也要加 r ?(没打开文件,或者字符串很长的情况下,不会注意到里面有没有特殊的符号)

wp231957 发表于 2024-5-8 08:50:48

blackantt 发表于 2024-5-8 08:46
不明白为啥非要在 原始字符串   r"./BV1Xe4y1c7iX\srt\bilibili-cookies.txt"前加r才行,   那以后只 ...

前半句是对的,文件的话,另当别论了   因文件和字符串还是有区别的
这个碰到具体问题再议
页: [1]
查看完整版本: 被这个替换给难住了?