【问题标题】:How separate (string, int and float) each item of a list in pythonpython中列表的每个项目如何分开(字符串,整数和浮点数)
【发布时间】:2020-10-06 01:53:01
【问题描述】:

我是 python 新手,所以我有一个列表作为示例

['wt_300_cont_6032 - - GLN 33 C HSD 32 CG - 0.990 ', 'wt_300_cont_6032 - - GLN 33 C HSD 32 CE1 - 0.916 ', 'wt_300_cont_6032 - - GLN 33 C HSD 32 CD2 - 0.963 ', 'wt_300_cont_6032 - - GLN 33 C GLN 33 CD - 1.000 ']

我想这样拆分:

wt_300_cont_6032 - - GLN 33 C HSD 32 CG - 0.990
wt_300_cont_6032 - - GLN 33 C HSD 32 CE1 - 0.916
wt_300_cont_6032 - - GLN 33 C HSD 32 CD2 - 0.963
wt_300_cont_6032 - - GLN 33 C GLN 33 CD - 1.000 

我的脚本是这样的:

filename = 'output.txt'
with open(filename) as f:
    for i in f:
         print i

我用过 print "\n".join(i) 什么都没用。它不像我想要的那样工作。会有什么问题? 任何人都可以指导我并支持我修复它?

非常感谢。

【问题讨论】:

  • 可以在python中使用.split()方法拆分数组。
  • 人们在猜测你想要什么,但不清楚。您有一个包含 4 个项目的列表,但描述了打开文件和打印行。什么确切是您的输入,什么确切是您想要的输出,以及您看到什么确切“不能按我的意愿工作”?请阅读如何发布minimal reproducible example
  • 谢谢,我会尝试编辑我的问题。感谢您的支持,对我的错误深表歉意。

标签: python database list split items


【解决方案1】:

使用 readline() 或 read() 读取文件。

with open(...) as f # You did well to use a with-statement!
    text = f.read()

mylist = text.split('\n')

逐行打印

for item in mylist:
    print(item)

""" It prints:
wt_300_cont_6032 - - GLN 33 C HSD 32 CG - 0.990
wt_300_cont_6032 - - GLN 33 C HSD 32 CE1 - 0.916
wt_300_cont_6032 - - GLN 33 C HSD 32 CD2 - 0.963
wt_300_cont_6032 - - GLN 33 C GLN 33 CD - 1.000 
"""

括号

print i  # nope
print(i) # yes

拆分

result =to_split.split(mylist)
# result = ['wt_300_cont_6032', '-', '-', 'GLN', '33', 'C', 'HSD', '32', 'CG', '-', '0.990']

编辑:

在我们的谈话之后,我们直接从输入值“input_list”开始。如果这可行,我们就知道问题出在我们读取文件的方式上。

尝试复制粘贴并运行它。它应该可以按您的意愿工作,它会逐行打印。

input_list = ['wt_300_cont_6032 - - GLN 33 C HSD 32 CG - 0.990 ', 'wt_300_cont_6032 - - GLN 33 C HSD 32 CE1 - 0.916 ', 'wt_300_cont_6032 - - GLN 33 C HSD 32 CD2 - 0.963 ', 'wt_300_cont_6032 - - GLN 33 C GLN 33 CD - 1.000 ']
for element in input_list:
    print(element)

【讨论】:

  • 谢谢,但是我想拆分每个项目,就像上面的文字一样。我的意思是,在 ' ' 之间的每个项目。
  • 我修改了结果。在“拆分”部分,它只是删除空格。然后,您可以在“mylist”中选择您想要的内容并转换为您想要的任何类型 int(mylist[4])。注意: to_split 显示如何分割一行。你循环在每一行上做,这很容易。但是你的回答很模糊。我们有点猜到你想要什么了。
  • 您好弗洛里安,感谢您的支持。对不起,也许我的英语不太好。但是,我想将输出作为您的“按行打印”部分,其中显示:“它打印”。我正在尝试使用您的脚本,但出于一个奇怪的原因,结果与输入的列表相同。抱歉,我是 python 新手,我正在尝试研究如何解决它,真的。
  • 我有个主意。让我们忘记 file.read() 并专注于如何逐行打印数据。我将编辑我的代码... :)
  • 感谢弗洛里安的耐心和帮助我。对无知和糟糕的时刻感到抱歉。祝你一切顺利!
【解决方案2】:

在这里拆分列表很容易:

for x in myList:
  print(x)

写入文件:

with open("filename.txt","rw") as f:
  for x in myList:
    f.write(x)

【讨论】:

  • 非常感谢,但结果是一样的。我不明白为什么加入,拆分以及您评论的这种方式不起作用。会是因为每个项目都是“大”的吗?例如:'wt_300_cont_6032 - - GLN 33 C HSD 32 CG - 0.990' ?
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2017-07-21
  • 2013-02-27
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多