擅长:python、mysql、java
<p>这种方法忽略名称字段,因为它们可以包含小数、“-”和“.”,只要它还包含其他内容。相反,此函数使用re模块测试非名称字段。如果希望在非名称字段中允许其他字符,可以修改regex。我对字符串\u B做了一些更改,以检查其他非十进制字符类型。你知道吗</p>
<pre><code>import re
import itertools
def filter_strings(stra, strb):
splita = stra.split("\n")
splitb = strb.split("|")
bnestlist = []
sublist = []
for segment in splitb:
if re.match("[\d\.-]+", segment):
sublist.append(segment)
else:
if sublist: bnestlist.append(sublist)
sublist = []
sublist.append(segment)
filtered = [group for group in bnestlist if group[0] in splita]
return "|".join(itertools.chain.from_iterable(filtered))
</code></pre>
<p>示例:</p>
<pre><code>>>> String_A='apple\nbanana\nkiwi\npear'
>>> String_B='cow|0.0|0.25|apple|0.0|-0.99|pig|0.0|horse|0.2|banana|0.0|dog|0.2|kiwi|0.25|'
>>> result = filter_strings(String_A, String_B)
>>> print(result)
apple|0.0|-0.99|banana|0.0|kiwi|0.25
</code></pre>