Python 从给定列中选择第一个值(不使用熊猫)

Python 从给定列中选择第一个值(不使用熊猫),python,dataset,Python,Dataset,我有一个专栏,如下所示: 370 370 370 371 371 371 371 371 371 371 371 371 371 372 372 372 我只想选择数字开头的第一个值。 这是我使用的代码。不使用熊猫 import os with open ("file") as data: p= list(data) o=[] for t in p: k= t.split() if k[0] == 'some value': if k[4] == 'A

我有一个专栏,如下所示:

370
370
370
371
371
371
371
371
371
371
371
371
371
372
372
372
我只想选择数字开头的第一个值。 这是我使用的代码。不使用熊猫

import os
with open ("file") as data:
    p= list(data)
o=[]
for t in p: 
    k= t.split()
    if k[0] == 'some value':
        if k[4] == 'A':
            o= k[5]
输出应该类似于:

370
371
372
尝试以下方法:

with open('tmp.txt') as fp:
    # turn it into a set of lines - duplicates are ignored
    nums = set(fp.readlines())
    # remove whitespace around those lines and turn them to integers
    nums = {int(num.strip()) for num in nums}

print(nums)
并阅读如何使用。它们非常有用

试试以下方法:

with open('tmp.txt') as fp:
    # turn it into a set of lines - duplicates are ignored
    nums = set(fp.readlines())
    # remove whitespace around those lines and turn them to integers
    nums = {int(num.strip()) for num in nums}

print(nums)
并阅读如何使用。它们非常有用

我建议使用:

import os
with open("file") as data:
   p = data.read().splitlines()
set(p)
它只返回唯一的值:

{'370', '371', '372'}
您目前面临的问题不仅仅是获取数据:

import os
with open ("file") as data:
    p= list(data)
p
返回具有换行符的数据:

['370\n',
 '370\n',
 '370\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '372\n',
 '372\n',
 '372\n']
我建议使用:

import os
with open("file") as data:
   p = data.read().splitlines()
set(p)
它只返回唯一的值:

{'370', '371', '372'}
您目前面临的问题不仅仅是获取数据:

import os
with open ("file") as data:
    p= list(data)
p
返回具有换行符的数据:

['370\n',
 '370\n',
 '370\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '371\n',
 '372\n',
 '372\n',
 '372\n']


是否要标识所有唯一值?如果是这样的话,你可以使用setp。谢谢你的回复,我尝试过使用它,但是输出不是我想要的。我已经提到了所需的输出,但是setp给了我类似的东西:{'3','7','1'}{'2','3','7'}{'2','3','7'}{'2','3','7'}导入文件时,使用p=data.readlines获得一个列表,其中每一行都是一个新元素。这里缺少一些东西@克里斯穆勒的回答是正确的。根据您的数据,p应该是['370\n','370\n'…]。setp应给出所需的结果。试着打印p,看看是否正确我试着使用readlines方法,但它仍然给我相同的输出{'1','3','7'}{'1','3','7'}{'2','3','7'}{'2','3','7'}。我认为问题发生了,因为我只从数据中选择了一列,因此,当我尝试setp时,我得到了由“\n”分隔的整个数据,但我只需要第五列。是否要标识所有唯一值?如果是这样的话,你可以使用setp。谢谢你的回复,我尝试过使用它,但是输出不是我想要的。我已经提到了所需的输出,但是setp给了我类似的东西:{'3','7','1'}{'2','3','7'}{'2','3','7'}{'2','3','7'}导入文件时,使用p=data.readlines获得一个列表,其中每一行都是一个新元素。这里缺少一些东西@克里斯穆勒的回答是正确的。根据您的数据,p应该是['370\n','370\n'…]。setp应给出所需的结果。试着打印p,看看是否正确我试着使用readlines方法,但它仍然给我相同的输出{'1','3','7'}{'1','3','7'}{'2','3','7'}{'2','3','7'}。我认为问题正在发生,因为我只从数据中选择了一列,因此,当我尝试setp时,我得到了由“\n”分隔的整个数据,但我只想要第五列。感谢您的回答,我尝试了这种方法,但得到的结果是这样的:知道为什么这里会出现花括号吗。{'3','5'}{'6','3','5'}{'6','3','5'}可能是通信障碍-执行此操作的关键是在尝试执行其余操作之前使用p=data.read.splitlines部分。这就解决了问题。我在自己的系统上试用了它,直到最近我才能够复制您看到的错误。到目前为止,我还没有发现这个错误。我唯一改变的是更新我的系统。现在,在使用set方法时,根据从文件中获取数据的方式,我得到了预期的{370\n',371\n',372\n'}或{370',371',372'}。你尝试过更新你的python吗?我还没有更新python,我会检查更新,然后再给你回复。谢谢你的信息!!我还没有更新python,我会检查更新,然后再给你回复。谢谢你的信息!!谢谢你的回复,我尝试了这个方法,但是我得到的结果是这样的:你知道为什么这里有花括号吗。{'3','5'}{'6','3','5'}{'6','3','5'}可能是通信障碍-执行此操作的关键是在尝试执行其余操作之前使用p=data.read.splitlines部分。这就解决了问题。我在自己的系统上试用了它,直到最近我才能够复制您看到的错误。到目前为止,我还没有发现这个错误。我唯一改变的是更新我的系统。现在,在使用set方法时,根据从文件中获取数据的方式,我得到了预期的{370\n',371\n',372\n'}或{370',371',372'}。你尝试过更新你的python吗?我还没有更新python,我会检查更新,然后再给你回复。谢谢你的信息!!我还没有更新python,我会检查更新,然后再给你回复。谢谢你的信息!!我得到的结果是:@Dustrokes您是使用Python 2还是Python 3?我只使用Python 3。我运行了该代码,它对我有效。我不确定你的问题出在哪里。我得到了这样的输出:@Dustrokes你是使用Python 2还是Python 3?我只使用Python 3我运行了那段代码,它对我有效。我不确定你的有什么问题。