gpt4 book ai didi

python - 拆分由标记和空格分隔的一行数字并将其存储到元组中的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:01 24 4
gpt4 key购买 nike

假设我有一个文本文件,其中数字由冒号和空格分隔,如下所示。

0:-83 1: -51 2: -69 3: -82 4: -85 8: -90 9: -69 QUAD
0:-88 1: -88 2: -98 3: -75 4: -42 5: -71 6: -89 7: -28 8: -83 9: -78 STADIUM

一对被定义为用冒号分隔的两个数字。空格任意中断数字对。

目前,我有以下内容。

with open('data.txt') as file:
lines = file.read().splitlines()
for line in lines:
line = line[:-1]
# What is the regex I should be using?
# data = re.split(r'[:\s]',line) includes the space after the colon if it exists

解析文本文件的最佳方法是什么,以便每一行都存储为元组列表,其中每个元组都是一对?

最佳答案

以下正则表达式将为您提供成对的数字对(包括减号):

r'\b(-?\d+)\s*:\s*(-?\d+)\b'

这匹配一个单词边界 (\b),然后是一组数字(前面有一个可选的 - 减号),后面是一个冒号可选的空格,后跟另一组带可选减号的数字,后跟单词边界。

演示:

>>> import re
>>> numpairs = re.compile(r'\b(-?\d+)\s*:\s*(-?\d+)\b')
>>> example = '0:-83 1: -51 2: -69 3: -82 4: -85 8: -90 9: -69 QUAD'
>>> numpairs.findall(example)
[('0', '-83'), ('1', '-51'), ('2', '-69'), ('3', '-82'), ('4', '-85'), ('8', '-90'), ('9', '-69')]

您可能不想一次将所有行都放入内存;逐行遍历文件:

import re
numpairs = re.compile(r'\b(-?\d+)\s*:\s*(-?\d+)\b')
with open('data.txt') as file:
for line in file:
for pair in numpairs.findall(line):
print pair

上面的代码不需要删除换行符,但如果你这样做,请使用 line.strip() 而不是 line[:-1].

关于python - 拆分由标记和空格分隔的一行数字并将其存储到元组中的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com