python - 如何检查列表中字符串的一部分是否包含在Python中的另一个列表中
问题描述
我一直在研究许多问题,这些问题似乎一针见血,但最终让我更加困惑,最终毫无帮助。所以希望没有人结束这个问题并让我参考其他问题,并且实际上对我有所帮助,因为我花了几个小时试图弄清楚它。出于安全原因,我无法提供实际文本,因此我将制作类似的列表。这些列表中有数千个字符串,但我只是举一个 3 的例子,故意放入我想要匹配的字符串。
列表= ['93900 2016-01-11.50 10.17'、'93030 2014-04-16.50 18.83'、'29322 2009-05-21.50 17.81']
list1= ['33492 2017-02-14.50 11.17', '93900 2016-02-11.00 11.15', '93900 2016-12-14.00 15.66']
- 列表字符之间的间距不同
- 我需要以“list”为例,93900 2016-01-11.50 10.17 并与 list1 中的字符串进行比较,并询问 93900 是否与日期 2016-01-11.50 一起但带有 +-month 缓冲区。所以理想情况下,它会从 list1 返回 '93900 2016-02-11.00 11.15'、'93900 2015-12-14.00 15.66'。我只知道如何比较完全相同或不完全相同的字符串。这更复杂,因为如果我进行比较,它显然会返回一个空列表,因为它们都不匹配。我需要一个更智能的代码,它可以在字符串中查找并允许我查找它附近的值。比较后,我还需要将完整字符串放入新列表,而不是部分字符串。
我希望这是有道理的,并且有人可以提供帮助。
我所拥有的只是一个不起作用的嵌套循环,因为我无法弄清楚如何比较部分字符串。
new_list= [] for line in list: for line1 in list1: if line[0:5] in line1[0:5] new_list.append[line]
是的,这显然不起作用,但它是一种检查列表中每个元素的方法,但不是某些字符。
解决方案
如果缓冲区始终为 1 个月并且数据格式相同,则此代码应该适合您:
def comp(s, l): # string to search, list
head, month = s.split('-')[0:2] # eg: with s = '93900 2016-01-11.50 10.17' head = '93900 2016' and month = '01'
head, year = head.split(' ') # head = '93900' year = '2016'
year = int(year)
month = int(month)
# managing edge cases where month is january or december
if month == 1:
y1 = year - 1
m1 = 12
else:
y1 = year
m1 = month - 1
if month == 12:
y2 = year + 1
m2 = 1
else:
y2 = year
m2 = month + 1
# building strings to search for
s1 = head + ' ' + str(y1) + '-' + str(m1).zfill(2)
s2 = head + ' ' + str(y2) + '-' + str(m2).zfill(2)
out = []
for item in l:
if s1 in item or s2 in item:
out.append(item)
return out
test_s = '93900 2016-01-11.50 10.17'
test_l = ['33492 2017-02-14.50 11.17', '93900 2016-02-11.00 11.15', '93900 2015-12-14.00 15.66']
print(comp(test_s, test_l))
推荐阅读
- tensorflow - 如何使用冻结推理图来检测图像中的对象?
- c++ - MPI_Gather std::vector: 0 在收集的向量处输出
- authentication - 如何为 ejabberd 网站 (Debian) 注册用户
- java - 为什么每次使用 AWS KMS CMK 加密时都会得到不同的字节?
- oop - 使用派生类型在 Fortran 中定义具有多个加数的运算符(+)。可分配数组的问题
- javascript - Jquery access elements under li tag
- reactjs - 如何在 React Native 中构建可由多个组件访问的单个模态组件?
- haskell - 如何在do块中读取文件
- angular - Azure Devops Artifacts 上的自定义 Angular 主题/示意图
- c# - 无法让 Blazor WASM AAD 应用角色工作