对于一个程序,我有一个包含大量不同数字的文件。我需要创建一个程序,只打印以1开头的数字。到目前为止,我有这个:
f=open('filename.txt').readlines()
for line in f:
numbers=line[0]
print(numbers)
当然,它会不断地打印每行的第一个数字,直到它完成整个文档。我试过了
numbers=line[0]
if numbers==1
print(number)
但这并没有让我任何地方。谁能帮我这个?感谢。
答案 0 :(得分:0)
当您读取文件时,内容将是一个字符串或一串字符串。您可以使用字符串方法,例如str.startswith
:
f=open('filename.txt').readlines()
for line in f:
numbers = [x for x in line if x.startswith("1")]
print numbers
上面的代码挑选出以"1"
开头的字符串中的所有项目。但是有一个问题,因为我们不知道你的数据是什么样的(例如分隔符是什么),它只会返回一堆数据。那是因为它通过每个字节的行字节并且因为它们是字符串,所以不可能知道1后跟0是10还是1和0。
这是一个假定您的数据由,
分隔的版本,我确定您将弄清楚如何根据您的需要对其进行修改。
with open('filename.txt') as f:
numbers = []
for line in f:
numbers.extend(x for x in line.split(",") if x.startswith("1"))
print ", ".join(numbers)
上面的代码使用了with
- 在处理文件时应该使用的语句,因为它处理文件描述符的打开和关闭,所以你不必这么做。然后,它会遍历文件的行,并将每个数字添加到数字列表中(如果它们以1
开头。最后,它将数字打印为长字符串,由,
分隔。
演示数据:
['3786, 9481, 314, 5951, 2676, 2938, 7725, 8849, 1609, 3451',
'9036, 4079, 4718, 2180, 6609, 8864, 5391, 9663, 9431, 665',
'6873, 2564, 559, 154, 573, 9232, 3094, 6530, 7594, 8347',
'7150, 7889, 2108, 4278, 4362, 7282, 3784, 1943, 3655, 4335',
'7196, 3537, 691, 5544, 70, 7171, 7375, 2911, 4992, 6834',
'8298, 4905, 2366, 3368, 4474, 5900, 5506, 250, 1854, 4595',
'4302, 3781, 984, 1176, 9183, 152, 9976, 2088, 9391, 8562',
......
]
示例输出:
'1609, 154, 1943, 1854, 1176, 152, 1884, 1091, 1507, 1550, 1565, 1938, 1341, 1829, 1050, 1796, 1931, 1116......'
答案 1 :(得分:0)
f=open('filename.txt').readlines()
for line in f:
if line[0] == '1':
print(line)
答案 2 :(得分:0)
试试这个:
numbers = line[0]
if type(numbers) == int and numbers[0] == 1:
print(numbers)
希望这有帮助!