我有一长串字符串,其中包含 4 条信息。我通过在空白处拆分它们来索引它们。不幸的是,在一些字符串中,第二条信息中也有一个空格。我希望能够删除两个冒号之间出现的任何空格。以下是列表中的一些项目:
abroad a:at:n request 1
abroad a:at:n silence 1
abroad a:at:n time 6
abroad a:because of:n schedule 1
abroad a:by:n american 1
abroad a:by:n bank 1
abroad a:by:n blow 1
所以,我的问题出现在上面的第 4 行。显然我可以手动删除空格来解决问题,但是列表有数千行。此外,我可以编写代码,用“becauseof”替换任何出现的“because of”,但这不是唯一出现的两个单词序列。此外,第三个切片有时包含“因为”,我想保留那里的空白。我当前的代码试图返回每个序列的频率,如下所示:
import sys
import pprint
occ_list = []
observed = {}
lines = sys.stdin.readlines()
for line in lines:
l = line.strip()
i = l.split(' ')
word = i[0]
rel = i[1]
wirts = i[2:-1]
wirt = ' '.join(wirts) # Word-in-relation-to (which may be compund)
occ = i[-1] # Frequency of specific "word, rel, wirt"
arb = (word, rel, wirt)
occ_list.append(int(occ))
if not arb in observed.keys():
observed[arb] = []
if not occ in observed[arb]:
observed[arb].append(int(occ)/float(1064542))
pprint.pprint(observed)
除了前面提到的带有额外空格的行之外,这行得通。
如有任何建议,我将不胜感激。 (我正在使用 python 3.2) 谢谢
最佳答案
首先在空格处拆分。如果第二项不包含空格,那么其中应该有 2 个冒号;如果只有一个冒号,则第二项中是空格,因此第二项和第三项是单个项目的一部分。
parts = line.split()
if parts[1].count(":") == 1:
parts[1 : 3] = [" ".join(parts[1 : 3])]
关于python - 在python中删除字符中串(可迭代),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8903695/