如何使用Python连接来自不同元组但在同一索引中的两个字符串?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Python连接来自不同元组但在同一索引中的两个字符串?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1538字,纯文字阅读大概需要3分钟。
内容图文
![如何使用Python连接来自不同元组但在同一索引中的两个字符串?](/upload/InfoBanner/zyjiaocheng/693/d7c8f14a9f4a490986bce4aef0879135.jpg)
文件中的元组:
('Wanna', 'O')
('be', 'O')
('like', 'O')
('Alexander', 'B')
('Coughan', 'I')
('?', 'O')
我的问题是,如何将来自不同元组但在同一索引中的两个字符串与条件连接起来?
例如,在我的情况下,如果[1]等于’B’,然后想接’I’,我想在[0]中加入字符串
因此输出将如下所示:
Alexander Coughan
这是我的代码,但输出不像我想要的那样,它只是打印出来的
“没有”:
readF = read_file ("a.txt")
def jointuples(sentt, i):
word= sentt[i][0]
wordj = sentt[i-1][0]
nameq = sentt[i][1]
if nameq =='I':
temp= ' '.join (word + wordj)
return temp
def join2features(sentt):
return [jointuples(sentt, i) for i in range(len(sentt))]
c_joint = [join2features(s) for s in readF]
c_joint
解决方法:
这是我的写法:
from ast import literal_eval
from itertools import tee
def pairwise(iterable): # from itertools recipes
a, b = tee(iterable)
next(b, None)
return zip(a, b)
with open("a.txt") as f:
for p0, p1 in pairwise(map(literal_eval, f)):
if p0[1] == 'B' and p1[1] == 'I':
print(' '.join(p0[0], p1[0]))
break
原因如下:
您的文件包含看起来像是两个字符串的Python元组的代表.这是一种非常糟糕的格式,如果您可以更改存储数据的方式,则应该这样做.但是,如果为时已晚,您必须解析它,那么literal_eval是最佳答案.
因此,我们通过将literal_eval映射到文件将文件中的每一行变成一个元组.
然后,我们从itertools recipes开始使用成对,将元组的可迭代数转换为相邻元组对的可迭代数.
因此,现在,在循环内部,p0和p1将是相邻行中的元组,您可以准确地写出您所描述的内容:如果p0 [1]为’B’并且其后是(即p1 [1]是)“我”,将两个[0]连在一起.
我不确定您想对连接的字符串做什么,所以我只是将其打印出来.我也不确定要处理多个值还是仅处理第一个值,因此我暂停了一下.
内容总结
以上是互联网集市为您收集整理的如何使用Python连接来自不同元组但在同一索引中的两个字符串?全部内容,希望文章能够帮你解决如何使用Python连接来自不同元组但在同一索引中的两个字符串?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。