python - 在python中删除字符中串(可迭代)

标签 python python-3.x

我有一长串字符串,其中包含 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/

相关文章:

python-3.x - 试图找到单词的频率。有什么方法可以把这封信算作它自己的词吗?

python - 在 python 中将 2D 切片合并到 3D 体积

python - 使用 Psycopg2 插入表 : Do Nothing on Conflict

python - 计算汽车 OpenCV + Python 问题

python - Pandas:如何解开每三个索引(行)并扩大数据框?

arrays - 连接列表中二维列表元素的行

python - 给定一个列表,如何计算该列表中的项目?

Python:根据负载、时间等监控和终止/节流生成的进程

python - 如何使用字典中的键查找值

python - 如何在 for 循环中创建多个复选框?