-3

可能重复:
如何使用 python 从文本文件中的行中读取特定字符?

我有一个 .txt 文件,其中的行看起来像这样

水 16:-30.4674 1:-30.4759 17:-30.5373 7:-30.6892 8:-31.128 13:-31.393 2:-31.4036 9:-32.0214 5:-32.4387 12:-32.6972 14:-32.8345 3:-32.8345 4.1 :-34.1308 15:-34.9566 11:-38.799 10:-51.471 6:-211.086

水 13:-33.3397 9:-33.511 12:-33.6573 17:-33.7629 5:-33.9539 3:-34.1326 7:-34.3554 15:-34.7484 8:-35.0615 2:-35.4279 16:-37.0666617。 :-38.4928 14:-41.2152 4:-43.3593 10:-80.4689 6:-208.802

打哈欠 13:-36.4616 9:-37.1025 15:-37.2519 17:-38.8885 8:-39.1585 14:-39.8553 2:-40.2131 12:-41.2615 1:-41.6317 7:-41.8205 316:-41.8205 3:-41.898-4-8 :-46.8158 5:-49.8107 4:-52.5595 10:-70.4841 6:-220.906

我需要做的是将 ' :' 之前的数字存储在一个数组中。

迭代方式或最简单的方法是什么?

f=open('path','r')
lines=f.readlines()
for line in lines:
   ...

从这里开始,我不知道拆分和存储过程......请帮忙。

4

3 回答 3

4

如果格式始终相同,您可以对每一行执行此操作:

items = line.split()[1:]
items = [item.split(':')[0] for item in items]

然后,如果您希望它们为整数:

items = map(int, items)

至于存储它们,在遍历每一行之前创建一个列表rows = [],然后你可以添加这样的项目:

rows.append(items)

所以总的来说,它看起来像这样:

f = open('path','r')
lines = f.readlines()
rows = []

for line in lines:
    items = line.split()[1:]
    items = [item.split(':')[0] for item in items]
    items = map(int, items)
    rows.append(items)

f.close()
print rows
于 2012-06-10T19:32:25.047 回答
0

这是正则表达式的工作:

import re

with open(myFilePath, "r") as f:
    text = f.read()
    numbers = re.findall(r"(-?\d+):\S+", text)

以上假设冒号之前的所有数字都是整数。

于 2012-06-10T19:52:53.680 回答
-1

使用 split 方法并将其附加到您的数组中:

myArray=line.split(':-')
于 2012-06-10T19:31:22.353 回答