鱼C论坛

 找回密码
 立即注册
查看: 1656|回复: 9

[已解决]如何对匹配字符串前后添加引号

[复制链接]
发表于 2021-9-10 13:34:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
例如有一个字符串(很长): $abc$哈哈哈$abcd$哈哈哈...$aaa$...

我想让 $...$ 变成 '$...$'

就像 '$abc$'哈哈哈'$abcd$'哈哈哈...'$aaa$'...

救命,我想了好久也没想到高效的解决办法

最佳答案
2021-9-10 13:41:30
本帖最后由 傻眼貓咪 于 2021-9-10 13:48 编辑
  1. def func(s: str) -> str:
  2.     res = ""
  3.     left = True
  4.     for i in s:
  5.         if i != "$":
  6.             res = res+i
  7.         elif left == True:
  8.             res = res+"\'"+i
  9.             left = not(left)
  10.         else:
  11.             res = res+i+"\'"
  12.             left = not(left)
  13.     return res


  14. string = "$banana$abcd$apple$1234$car$5678adsasda"
  15. print(func(string))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-10 13:41:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2021-9-10 13:48 编辑
  1. def func(s: str) -> str:
  2.     res = ""
  3.     left = True
  4.     for i in s:
  5.         if i != "$":
  6.             res = res+i
  7.         elif left == True:
  8.             res = res+"\'"+i
  9.             left = not(left)
  10.         else:
  11.             res = res+i+"\'"
  12.             left = not(left)
  13.     return res


  14. string = "$banana$abcd$apple$1234$car$5678adsasda"
  15. print(func(string))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-10 13:54:20 | 显示全部楼层

爬虫,大概有2k多个文本,每个文本大约有10个左右的$$,这样效率会不会太慢了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 14:09:05 | 显示全部楼层
Sagiri 发表于 2021-9-10 13:54
爬虫,大概有2k多个文本,每个文本大约有10个左右的$$,这样效率会不会太慢了?

那爬虫的代码呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-10 14:17:54 | 显示全部楼层
suchocolate 发表于 2021-9-10 14:09
那爬虫的代码呢?
  1. import re
  2. import urllib.request,urllib.error
  3. import bs4

  4. baseUrl = "https://www.luogu.com.cn/problem/P"
  5. savePath = "C:\\Users\\Sagiri\\Desktop\\p\"
  6. maxn = 1005

  7. def main():
  8.     print("计划爬取到P{}".format(maxn))
  9.     for i in range(1000,maxn+1):
  10.         try:
  11.             print("正在爬取P{}".format(i))
  12.             html = getHTML(baseUrl + str(i))
  13.             problemMD = getMD(html)
  14.             saveData(problemMD,"P"+str(i)+".md")
  15.         except Exception:
  16.             pass
  17.         continue
  18.     print("爬取完毕")

  19. def getHTML(url):
  20.     headers = {
  21.         "user-agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 85.0.4183.121 Safari / 537.36"
  22.     }
  23.     request = urllib.request.Request(url = url,headers = headers)
  24.     response = urllib.request.urlopen(request)
  25.     html = response.read().decode('utf-8')
  26.     return html

  27. def getMD(html):
  28.     bs = bs4.BeautifulSoup(html,"html.parser")
  29.     core = bs.select("article")[0]
  30.     md = str(core)
  31.     md = re.sub("<h1>","# ",md)
  32.     md = re.sub("<h2>","## ",md)
  33.     md = re.sub("<h3>","#### ",md)
  34.     md = re.sub("</?[a-zA-Z]+[^<>]*>","",md)
  35.     return md

  36. def saveData(data,filename):
  37.     cfilename = savePath + filename
  38.     file = open(cfilename,"w",encoding="utf-8")
  39.     for d in data:
  40.         file.writelines(d)
  41.     file.close()

  42. if __name__ == '__main__':
  43.     main()


复制代码


爬洛谷的题库,因为洛谷用的md语法编辑的,变量全是$...$形式,必须要加`$...$`才能在编辑器里正常读取
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 14:26:01 | 显示全部楼层
Sagiri 发表于 2021-9-10 13:54
爬虫,大概有2k多个文本,每个文本大约有10个左右的$$,这样效率会不会太慢了?

時間複雜度:>= 2000*10(不會很大啊)
先試試吧,再不行再試其它方法吧,目前我只想到這樣

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-10 14:30:15 | 显示全部楼层
傻眼貓咪 发表于 2021-9-10 14:26
時間複雜度:>= 2000*10(不會很大啊)

先谢谢大佬了,其实我一开始也是这么想的,但是太懒了不太想写,就想着有没有某个方法可以快速替换,结果找了一上午也没找到_(:з)∠)_
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 15:08:42 | 显示全部楼层
你说的是这种 $...$ 么?这是 markdown 支持的 LaTeX 行内公式,可能需要一个能渲染 LaTeX 公式的浏览器,找一找有很多。
如果很熟悉 LaTeX 语法不渲染也能读懂吧

  1. ## 题目描述
  2. 输入两个整数 $a, b$,输出它们的和($|a|,|b| \le {10}^9$)。
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-10 17:04:23 | 显示全部楼层
blahblahfc 发表于 2021-9-10 15:08
你说的是这种 $...$ 么?这是 markdown 支持的 LaTeX 行内公式,可能需要一个能渲染 LaTeX 公式的浏览器, ...

确实,但是有时候公式比较复杂,不太方便阅读,而且latex语法我也不太会_(:з)∠)_
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 17:30:43 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-10 17:39 编辑
Sagiri 发表于 2021-9-10 17:04
确实,但是有时候公式比较复杂,不太方便阅读,而且latex语法我也不太会_(:з)∠)_

LaTex 語言並不難,因為可用代碼不多,只需變化就可以了,我常在力扣發表討論時也常用,多少看你想知道什麼可以告訴你

A

A

B

B
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表