我有两个快速python问题。这是我第一次使用python;我几乎没有任何编程经验所以我道歉 - 这是一个非常基本的问题,我知道它应该很容易。我确实搜索了现有的答案,却找不到任何有用的答案。
基本上,我有一个.txt文件,可以跟上31个变量。顶部有一个带有类别名称的标题,然后以下行只是条目。它看起来像这样:
date time parameter3 ... parameter31
d1 t1 p3_1 ... p31_1
d2 t2 p3_2 ... p31_2
等。
除了参数6之外,所有参数都是数字的,参数6可以是三个字母的字符串,如果是空的,则为“......”
.txt文件不以逗号分隔;只有一到三个空格将每个值分开。
我正在尝试将此文本文件导入Python,从每行创建一个列表,然后让Python检查parameter7和parameter9。如果参数7 <30并且参数9 <35,我希望Python获取该条目并将其输出到新的.txt文件。如果这些条件中的任何一个不成立,我希望它忽略该特定行并继续前进。我该如何编写这样的程序?
这是我发现的唯一与我的问题相似的东西: How to Convert a Text File into a List in Python
但是,上面假设.txt文件已经以逗号分隔。
感谢您的帮助!
答案 0 :(得分:3)
使用line.split()以获取字段应该适合您。
例如:
def line_should_be_stored(fields):
return int(fields[6]) < 30 and int(fields[8]) < 35
f_out = open('test.txt', 'wt')
with open('test.txt', 'rt') as f_in:
for line in f_in:
fields = line.split();
if line_should_be_stored(fields):
f_out.write(line)
f_out.close()
答案 1 :(得分:0)
创建一个写方法:
def write_method(row)
"""
Note this method will append to an exsisting file,
if you do not want that then remove conditional statement below and replace
'a' with 'w+' in the with statement.
"""
if not os.path.isfile('somefile.txt'):
with open('somefile.txt' 'w+')
with open('somefile.txt', 'a') as the_file:
the_file.write(row)
您提供的链接是正确的答案,您只需要替换:
for i in line.split(","):
带
for i in line.split(" "):
这会给你:
[&#34; d1&#34;,&#34; t1&#34;,&#34; p3_1&#34;,&#34; ...&#34;,&#34; p31_1&#34 ;,&#34; d2&#34;,&#34; t2&#34;,&#34; p3_2&#34;,&#34; ...&#34;,&#34; p31_2&#34;]
对于每一行而不是追加你可以抓住&#34;行[6]和行[8]&#34;
if line[6] is <30 and line[8] is <35:
row.append(line)
如果您每次都需要新行上的行&#39; row.append(line)&#39;变成
row.append('%s\n' % line)
解析文件后,您可以将行传递给文件写入方法
write_method(row)