关于 Python 表达包含与被包含的语法

2020-12-18 10:36:15 +08:00
 kevinfk2
例如两个数据对比

A: aabbcc

B: abbc

如果 A 包含 B,就输出 。

用什么表达语法啊

新手求解,大佬莫怪
3048 次点击
所在节点    Python
38 条回复
JeffGe
2020-12-18 14:47:23 +08:00
if any(i in s2 for s2 in sheet2.col_values(0)):
owtotwo
2020-12-18 14:48:44 +08:00
你得先定义什么是“相似” 再谈其他的
kevinfk2
2020-12-18 14:55:52 +08:00
@JeffGe 感谢大佬,出效果了 十分感谢!
lanshee
2020-12-18 14:59:57 +08:00
if A in B or B in A 这样行不?
kevinfk2
2020-12-18 15:02:34 +08:00
@lanshee 好像不行吧 我没试 in 好像都是查完全一致的才行
sudoy
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)
```
sudoy
2020-12-18 15:09:26 +08:00
或者

a = ['苹果', '橘子', '香蕉', ‘葡萄’]
b = ['苹果', ‘越南橘’, '香蕉', '椰子']
c = [x for x in a if x in b]

c 应该就是你要找的
sudoy
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']
sudoy
2020-12-18 15:20:20 +08:00
如果你要模糊匹配,可以为:

>>> 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)
lanshee
2020-12-18 15:21:02 +08:00
@sudoy 你这个少遍历了吧,这个是全量匹配了.他的需求应该是当前单词在不在另一组的单词里,而不是在另一组里
sudoy
2020-12-18 15:28:35 +08:00
@lanshee 嗯,我前面没看清楚,最后一个回复里面考虑到得了。不过这里面还有特殊字符的问题,另外还有可能要把名字拆开匹配,比如“某某公司”和“某某有限责任公司”属于同一家公司,那么就要把前面拆成四个字,后面拆成八个字,如果后面那八个字都包含前面四个字,就是满足条件
duzhor
2020-12-18 15:28:38 +08:00
你这个 if 的意思是如果 sheet1 的元素在 sheet2 的列表里面。所以要加一层 for 去遍历 sheet2,再把 sheet1 里的每个元素依次跟 sheet2 里的每个元素比较。
TimePPT
2020-12-18 15:40:47 +08:00
字符串匹配策略遇到
翰硕电子 | 翰碩電子
这种 case 你没法解的
est
2020-12-18 15:49:01 +08:00
@TimePPT 正解了。

所以 LZ 这个事其实还是手动做的好。。
xuqiccr
2020-12-18 15:50:20 +08:00
BTW,处理 Excel 试试 pandas
kevinfk2
2020-12-18 16:02:38 +08:00
@est 这只是个例子 要处理的数据有几 w 个
krixaar
2020-12-18 17:22:00 +08:00
如果真的只是差“有限公司”或者“有限责任公司”这样,可以直接把另一边的数据先处理了再比对。
问题是规则是不是就这么简单,比如碰到农行、农发行、农业银行、农业发展银行这样的。
HelloViper
2020-12-21 11:24:27 +08:00
以前的公司名匹配度算法供参考:
https://github.com/verarong/CompanyNameMatch

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/736666

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX