python - 如何使用 python 计算文本文件中的数字列表

标签 python numbers range

我想检查文本文件(P1.txt)中的数字列表,格式示例如下:

68278 63989 64283 65917 66503 68794 68299 64827 65294 68783 68857 68459 66552 63053 66588 68162 67316 66742 65008 64327 65320 68307 65798 65198 67868 67157 63526 63917 ...

我尝试用我编写的代码来做到这一点,如下所示:

with open("P1.txt") as fin, open("P1_c.txt","w") as fout:
 for line in fin:
  P = line.split()
  for i in P:
    i=P.split()
    if i in range(64600,64799) :
        fout.write("|"+str(P)+"+"+" |")
    elif i in range(67000,67319) :
        fout.write("|"+str(P)+"+"+" |")
    elif i in range(67399,67600) :
        fout.write("|"+str(P)+"+"+" |")
    elif i in range(68000,68699) :
        fout.write("|"+str(P)+"+"+" |")
    elif i in range(69400,69599) :
        fout.write("|"+str(P)+"+"+" |")
    else:
        fout.write("|"+str(P)+"-"+" |")

我想检查这些数字是否在我定义的范围内。如果它们在这些范围内,它应该打印数字并在后面加上“+”,如果不在这些范围内,则在数字后面加上“-”。但不知道为什么不行?! :) 我什至试图理解此链接“Comparing numbers in a text file to a list of numbers in an other textfile”中讨论的内容 但什么也没得到。

最佳答案

我建议采用以下解决方案:我们从文件中获取所有整数(一次,如果不是很大的话就不成问题)并使用辅助函数来检查数字是否在给定元组集合的任何范围内表示范围。

>>> def in_ranges(x, range_tuples):
...     return any(t[0] <= x < t[1] for t in range_tuples)
>>>
>>> range_tuples = [(64600,64799), (67000,67319), (67399,67600),
...                 (68000,68699), (69400,69599)]
>>>
>>> with open('testfile') as f:
...     for number in map(int, f.read().split()):
...         if in_ranges(number, range_tuples):
...             sign = '+'
...         else:
...             sign = '-'
...         print '|{}{}|'.format(number, sign)
... 
|68278+|
|63989-|
|64283-|
|65917-|
|66503-|
|68794-|
|68299+|
|64827-|
|65294-|
|68783-|
|68857-|
|68459+|
|66552-|
|63053-|
|66588-|
|68162+|
|67316+|
|66742-|
|65008-|
|64327-|
|65320-|
|68307+|
|65798-|
|65198-|
|67868-|
|67157+|
|63526-|
|63917-|

关于python - 如何使用 python 计算文本文件中的数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801355/

相关文章:

python - 在Python中重命名类变量而不使用self

python - 在Python中按日期和时间索引和切片数据帧

python - 在 Python 中对列表进行数字排序

java - 从 0-9 获得四个唯一随机数的最佳方法是什么?

excel - 无法使用目标复制将一个单元格复制到另一个单元格

postgresql - SQL中两个日期范围的重叠(以分钟为单位)

python - Twitter 流数据中的时间格式

JAVA:如何按下一个最接近的值对数组进行排序?

java - 确定偏移量是否在行号之间?

python - 转换时间(HH :MM:SS) to minutes in python