将字符串转换为列表?

2024-10-02 02:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我从文本文件复制的字符串。我想用新数据替换最后一列

CROPWAT 8.0 Climate data
 0   6

Ananthapur
-99.90
 -99.90  -99.90
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     3.90
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     4.77
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     5.78
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     6.30
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     6.17
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     5.06
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     4.49
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     4.41
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     4.49
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     4.12
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     3.68
 -99.9 -99.9  -99.9  -99.9  -99.9 -99.9     3.48

new_data = ['3.10', '3.71', '4.46', '4.83', '5.02', '4.72', '4.09', '3.96', '3.84', '3.54', '3.15', '2.93']

我必须在不丢失原始数据格式的情况下完成此任务。我正在使用.replace命令,但代码很长。如果有更聪明的方法,请告诉我


Tags: 数据方法字符串代码命令newdata情况
2条回答

将字符串s拆分为标题(前6行)和表(其余行):

rows = s.split("\n")
header = rows[:6]
table = rows[6:]

用新值替换表中每一行的尾部:对于每一行,找到最右边的空间,从开始到该空间取一个行片段,并将其与补丁连接起来

new_table = [(row[:row.rfind(" ")+1] + patch) 
             for row,patch in zip(table, new_data)]

重新组合标头和更新的表:

"\n".join(header + new_table)

基线将分离列[6],并用新列表替换。可以使用.split()拆分文件。示例

try:
  fhand = open('/pathtoyourfile')
except:
print('file not found !!!')
   exit()

new_data = ['3.10', '3.71', '4.46', '4.83', '5.02', '4.72', '4.09', '3.96', '3.84', '3.54', '3.15', '2.93']
for value,line in zip(new_data,fhand):
    elements = line.split( )
    print("{}\t{}\t{}\t{}\t{}\t{}\t{}".format(elements[0], elements[1],elements[2],elements[3],elements[4],elements[5] ,value,elements[6]))

相关问题 更多 >

    热门问题