|      1destinism      2020-12-18 10:53:35 +08:00 B in A 吧 | 
|      2galileo1214      2020-12-18 10:55:22 +08:00 isin | 
|      3whitefox027      2020-12-18 10:58:46 +08:00 if B in A : | 
|      6ly4572615      2020-12-18 11:01:26 +08:00 那用正则吧 | 
|      7kevinfk2 OP @galileo1214 我试试 | 
|      8ly4572615      2020-12-18 11:02:14 +08:00 或者 find()方法 | 
|      11LiKanKan      2020-12-18 11:09:53 +08:00 via Android A:str = "aabbcc" B:str = "abbc" if A.find(B) == -1: #找不到为-1,如果找到则为第一个出现的位置 print("B is not in A") else: print("A contains B") | 
|  |      13HashV2      2020-12-18 11:52:07 +08:00 @kevinfk2 如果你是只是想无序的判断 B 列表内所有的元素在不在另 A 列表中遍历就好了: all([ele in A for ele in B]) 如果想有序判断可以先在 A 中找到 B 的第一个元素的所有的索引 按照 B 的长度从索引切片后和 B 比较,如果有一个为真就是有序包含了 | 
|      14LiKanKan      2020-12-18 12:08:47 +08:00 via Android  1 @kevinfk2 如果是 List[str]可以用"".join(A 或 B)转化成上面一种情况。如果包含其他种类元素:如果连续有序,就手写子串匹配;如果不连续有序,就遍历 B,对着 A 的元素找;如果不连续也不有序,反之,对遍历 A 找 B | 
|  |      15no1xsyzy      2020-12-18 12:38:56 +08:00 | 
|  |      16009694      2020-12-18 12:56:59 +08:00 via iPhone 为啥要用 find 不用 in 。。find 比 in 慢得多  (从 js 转的还是 java 转的? | 
|      17JeffGe      2020-12-18 13:19:26 +08:00 >>> A = [1, 1, 2, 2, 1, 1] >>> B = [1, 2, 2, 1] >>> str(B)[1:-1] in str(A) True | 
|  |      19ipwx      2020-12-18 14:42:51 +08:00 你需要某种字符串相似度计算的算法,比如编辑距离( edit distance ) https://leetcode.com/problems/edit-distance/ https://pypi.org/project/editdistance/0.3.1/ | 
|  |      20ipwx      2020-12-18 14:44:07 +08:00 在做一些根据先验知识的预处理。比如后缀“有限公司”或者“公司”就先全部删掉。 | 
|      21JeffGe      2020-12-18 14:47:23 +08:00 via Android  1 if any(i in s2 for s2 in sheet2.col_values(0)): | 
|  |      22owtotwo      2020-12-18 14:48:44 +08:00 via Android  1 你得先定义什么是“相似” 再谈其他的 | 
|      24lanshee      2020-12-18 14:59:57 +08:00 if A in B or B in A 这样行不? | 
|  |      26sudoy      2020-12-18 15:04:12 +08:00 我看你好像只遍历一个数据,两个都要遍历。 ``` a = ['苹果', '橘子', '香蕉', ‘葡萄’] b = ['苹果', ‘越南橘’, '香蕉', '椰子'] c = [] for x in a: for y in b: if x == y: c.append(x) ``` | 
|  |      27sudoy      2020-12-18 15:09:26 +08:00 或者 a = ['苹果', '橘子', '香蕉', ‘葡萄’] b = ['苹果', ‘越南橘’, '香蕉', '椰子'] c = [x for x in a if x in b] c 应该就是你要找的 | 
|  |      28sudoy      2020-12-18 15:10:30 +08:00 >>> a = ['apple', 'orange', 'banana'] >>> b = ['apple', 'grape', 'banana'] >>> c = [x for x in a if x in b] >>> c ['apple', 'banana'] | 
|  |      29sudoy      2020-12-18 15:20:20 +08:00  1 如果你要模糊匹配,可以为: >>> a = ['apple', 'orange', 'banana'] >>> b = ['apple', 'grape', 'fresh banana'] >>> c = [] >>> for x in a: ...............for y in b: ........................if x == y or x in y: ...............................c.append(x) | 
|  |      31sudoy      2020-12-18 15:28:35 +08:00 @lanshee 嗯,我前面没看清楚,最后一个回复里面考虑到得了。不过这里面还有特殊字符的问题,另外还有可能要把名字拆开匹配,比如“某某公司”和“某某有限责任公司”属于同一家公司,那么就要把前面拆成四个字,后面拆成八个字,如果后面那八个字都包含前面四个字,就是满足条件 | 
|  |      32duzhor      2020-12-18 15:28:38 +08:00 你这个 if 的意思是如果 sheet1 的元素在 sheet2 的列表里面。所以要加一层 for 去遍历 sheet2,再把 sheet1 里的每个元素依次跟 sheet2 里的每个元素比较。 | 
|  |      33TimePPT PRO  1 字符串匹配策略遇到 翰硕电子 | 翰碩電子 这种 case 你没法解的 | 
|  |      3579lawyer      2020-12-18 15:50:20 +08:00 BTW,处理 Excel 试试 pandas | 
|      37krixaar      2020-12-18 17:22:00 +08:00 如果真的只是差“有限公司”或者“有限责任公司”这样,可以直接把另一边的数据先处理了再比对。 问题是规则是不是就这么简单,比如碰到农行、农发行、农业银行、农业发展银行这样的。 | 
|  |      38HelloViper      2020-12-21 11:24:27 +08:00 以前的公司名匹配度算法供参考: https://github.com/verarong/CompanyNameMatch |