1

Pythonでテキストファイルのデータの最初の列をリストに変換したい

data = open ('data.txt', 'r')
data.read()

提供します

'12 45\n13 46\n14 47\n15 48\n16 49\n17 50\n18 51'

助けてください。

4

2 に答える 2

7

str.splitここで使用できますlist comprehension

with open('data.txt') as f:
   lis = [int(line.split()[0]) for line in f]
>>> lis
[12, 13, 14, 15, 16, 17, 18]

数値が文字列の場合:

>>> with open('abc') as f:
       lis = [line.split()[0] for line in f]
>>> lis
['12', '13', '14', '15', '16', '17', '18']

簡易版:

>>> with open('abc') as f:     #Always use with statement for handling files
...     lis = []
...     for line in f:         # for loop on file object returns one line at a time
...         spl = line.split() # split the line at whitespaces, str.split returns a list
...         lis.append(spl[0]) # append the first item to the output list, use int() get an integer
...     print lis    
...     
['12', '13', '14', '15', '16', '17', '18']

のヘルプと例str.split:

>>> strs = "a b c d ef gh i"
>>> strs.split() 
['a', 'b', 'c', 'd', 'ef', 'gh', 'i']
>>> print str.split.__doc__
S.split([sep [,maxsplit]]) -> list of strings

Return a list of the words in the string S, using sep as the
delimiter string.  If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator and empty strings are removed
from the result.
于 2013-06-11T08:22:05.303 に答える
2
import csv
with open ('data.txt', 'rb') as f:
    print [row[0] for row in csv.reader(f, delimiter=' ')]

['12', '13', '14', '15', '16', '17', '18']
于 2013-06-11T08:22:43.383 に答える