V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  szdosar  ›  全部回复第 15 页 / 共 38 页
回复总数  745
1 ... 11  12  13  14  15  16  17  18  19  20 ... 38  
2023-09-07 15:31:21 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
可以改进的,返回的子串之间有相互包含的情况。我们在添加子串到结果集之前进行检查,可以检查新找到的子串是否包含在结果集中的任何子串中,或者结果集中的任何子串是否包含在新找到的子串中。
fix 源码 https://pastebin.com/raw/6aKqeUrP
2023-09-07 14:15:29 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
不要执着于用迭代操作,我们来分析一下。
##itertools 是一个非常强大的库,它提供了很多用于处理迭代操作的工具。但是,对于特定的问题,直接的算法可能会更加高效。
##在我们的情境中,我们要找的是两个字符串之间的所有公共子串。使用 itertools 可能会涉及生成所有可能的子串组合,然后再进行比较,这在某些情况下可能会导致不必要的计算。
##而我们使用的滑动窗口方法是基于以下观察结果的:
##如果两个字符串在某个位置有一个公共字符,那么我们可以尝试扩展这个匹配,直到找到一个公共子串或匹配失败为止。
##通过这种方式,我们可以立即找到一个公共子串,而不需要生成和比较所有可能的子串组合。
##因此,对于这个特定的问题,滑动窗口方法可能会比使用 itertools 更加高效。但这并不意味着 itertools 不是一个有用的库。对于其他类型的问题,itertools 可能会提供更简洁、更高效的解决方案。
##以下使用滑动窗口方法
##find_common_substrings_huadong
源代码效率可大幅提高:
https://pastebin.com/raw/Qfr31L8a
2023-09-07 11:37:18 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
我处理了一下你这个代码的缩进 https://pastebin.com/raw/6mEqdaZG
输出是:
'''
是个好日子,
[Finished in 131ms]
'''
2023-09-06 19:07:08 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
https://drive.google.com/file/d/1-Kv19SR2HITSiWnzs6XzI_JqyqcjpK2w/view?usp=sharing
- - - - - - - - - - - - - - -
感谢指点,我也就是半桶水,上面这个链接是源码。
2023-09-06 14:23:11 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
方法有不是只有一套,对吧?
'''
#find_common_substrings_excel
#读取 Excel 文件,使用 pandas 库。确保你已经安装了 pandas 和 xlrd 库。可以使用以下命令进行安装:pip install pandas xlrd openpyxl
import pandas as pd

def find_common_substrings(s1, s2, min_length=4):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 添加一个函数来读取 Excel 文件的内容
def read_excel_content(filename):
# 读取 Excel 文件的第一个工作表
df = pd.read_excel(filename, sheet_name=0)
# 获取第一列的内容并将其转换为字符串
return df.iloc[:, 0].astype(str).str.cat(sep=' ')

# 使用上面的函数来读取 Excel 文件的内容
s1 = read_excel_content('file1.xlsx')
s2 = read_excel_content('file2.xlsx')

# 使用 find_common_substrings 函数来对比这两个文件的内容
print(find_common_substrings(s1, s2))
'''
2023-09-06 13:46:46 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
你把要比较的内容放在两个文本文件中试试:
'''
def find_common_substrings(s1, s2, min_length=8):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 添加一个函数来读取文件内容
def read_file_content(filename):
with open(filename, 'r', encoding='utf-8') as file:
return file.read()

# 使用上面的函数来读取 file1.txt 和 file2.txt 的内容
s1 = read_file_content('file1.txt')
s2 = read_file_content('file2.txt')

# 使用 find_common_substrings 函数来对比这两个文件的内容
print(find_common_substrings(s1, s2))
'''
2023-09-06 11:40:37 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
你改一下 min_length=9 ,结果就是
['中了 500 万彩票', '中了 500 万彩']
[Finished in 133ms]
所以是不是这个的原因,长度问题?
2023-09-06 11:22:48 +08:00
回复了 asuraa 创建的主题 宽带症候群 杭州联通端口全被屏蔽
另外,你的超时毫秒改成 400-500 毫秒看看?
2023-09-06 11:21:44 +08:00
回复了 asuraa 创建的主题 宽带症候群 杭州联通端口全被屏蔽
我怀疑可能是由于线程并发导致的,
当并发扫描大量端口时,
某些端口的结果可能会被其他线程的输出所覆盖,
或者由于某种原因被忽略。
你试试把线程数降低点,
比如 5 线程?
2023-09-06 09:40:09 +08:00
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
试试这个,运行结果是:['是个好日子,', '中了 500', '中了 500 万彩票', '中了 500 ', '是个好日', '中了 500 万', '中了 50', '是个好日子', '中了 5', '中了 500 万彩']
[Finished in 89ms]
```
def find_common_substrings(s1, s2, min_length=4):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 示例
s1 = "我今天特别开心啊,因为今天是个好日子,我中了 500 万彩票。"
s2 = "今天不是个好日子,因为邻居中了 500 万彩票,我今天不开心。"
print(find_common_substrings(s1, s2))
```
2023-09-05 13:01:33 +08:00
回复了 Blabber9125 创建的主题 程序员 ss 回家如何访问局域网
@Blabber9125
你需要管理员权限运行 v2rayN 6.x 才能拨动 Tun 模式按钮,在视窗的左下方。
-------------
tun 模式设置是什么样的呢,我打开了也不行
2023-09-05 11:00:18 +08:00
回复了 Blabber9125 创建的主题 程序员 ss 回家如何访问局域网
v2rayN 6.x 后有 tun 模式,实操 v6.23 可行。
--启用 Tun 模式
--自动配置系统代理
--路由:全局模式
你试试看没问题的
https://github.com/2dust/v2rayN/releases
2023-09-04 15:51:20 +08:00
回复了 barryzhai 创建的主题 宽带症候群 提升从英国访问国内家中 NAS 速度
@Huelse
全盘加密可行否?
------
警告各位不要自己运硬盘!
2023-09-03 18:57:47 +08:00
回复了 kirkge 创建的主题 程序员 看完《奥本海默》怀疑自己了
不用怀疑自己,如果不了解这些故事的背景,看不懂是正常的。
我今天也看了,觉得不好看。
只觉得他后悔了,还被一些以前的同僚针对,后来得以平反,就是这么个故事
2023-08-31 15:08:26 +08:00
回复了 0littleboy 创建的主题 程序员 生物存在的意义是什么?(午休时的奇思妙想)
捷克作家米兰昆德拉在他的小说《不能承受的生命之轻》里面提到过一句德国谚语,
叫做 Einmal ist keinmal ,
翻译成英语就是 Once doesn't count ,
只发生过一次的事情,
就像没发生过一样。

我们的存在竟然是虚无,
就好像一朵开在山间的野百合,
她在山间自开自落,
如果没有人来看过她,
她曾经盛开时所绽放出来的美丽光彩,
还是美丽的吗?

这些想法都未免过于悲观,
只是它能轻而易举的占领我们的潜意识。
只有你觉知到,才能改变它。
我们的存在,
我们所绽放出来的光彩,
希望得到见证,
因为只有得到了见证,
我们的光彩才是美丽的,
我们的存在才是有意义的,
而见证就需要他者的存在,
自我的真实性乃至世界的真实性是由他者保障的。

所以,我们的存在是要见证和保障他者的存在,
包括我们爱的人和爱我们的人。
2023-08-31 13:12:04 +08:00
回复了 WizardLeo 创建的主题 OpenWrt Passwall2 的 dns 泄露问题
xray 降级到 1.75 再试?
2023-08-28 13:05:06 +08:00
回复了 8675bc86 创建的主题 宽带症候群 折腾多年的网络体会
@MeteorVIP #65 建议 v6 也代理
2023-08-27 10:49:29 +08:00
回复了 8675bc86 创建的主题 宽带症候群 折腾多年的网络体会
路径都是这样的:
折腾--稳定--不折腾
验收标准是:浏览器访问 https://ipleak.net/不出现我朝国旗即可
1 ... 11  12  13  14  15  16  17  18  19  20 ... 38  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5989 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 02:13 · PVG 10:13 · LAX 18:13 · JFK 21:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.