【问题标题】:I need to match a and b variables to a list of x,y coordinates in a text file with certain conditions我需要将 a 和 b 变量与具有特定条件的文本文件中的 x,y 坐标列表进行匹配
【发布时间】:2019-07-01 01:15:35
【问题描述】:

使用 python 2.7。

我有一个包含 x,y 坐标的文本文件。

我想匹配文本文件中可用的不同坐标组合并为其分配一个数字并使其打印出“酷”。例如3,1坐标应为1。1,1坐标应为2,3,3坐标应为3。

我在读取我的文件时遇到了 csv 模块问题。

我尝试像这样简化我的代码并且它可以工作,但是当我尝试在我的文件中读取时,没有成功的匹配发生。

coordinates = 'all_6_ligand_coordinates.dat'
a = 3
b = 1
with open(coordinates,'r') as file_in:
    reader = csv.reader(file_in)
    your_list = list(reader)
    for x, y in your_list:
        if x == a and y == b:
           print("Cool")
           print("1")
        else: 
           print("sucks to be you")

我希望我的代码能够遍历 all_6_ligand_coordinates.dat,如果 (x,y) 是 (3,1),它会打印出“酷”。

我已将 all_6_ligand_coordinates.dat 文件附加为保管箱链接https://www.dropbox.com/s/p124z50pgozajrh/all_6_ligand_coordinates.dat?dl=0

感谢您的帮助!

编辑:忘记添加 print("1")

【问题讨论】:

  • cvs.reader 返回“从 csv 文件读取的每一行都作为字符串列表返回。”。尝试将ab 更改为带有a = '3'b = '1' 的字符串,然后再次运行您的脚本,应该会按预期工作。
  • 天哪,谢谢。我被困在这个问题上很长时间了,而且很简单。您能否将其发布为答案,以便我将其作为正确答案?这对我有用。谢谢!

标签: python-3.x python-2.7 csv coordinates


【解决方案1】:

list(reader) 返回一个字符串列表,与您的整数进行比较时,该列表将不匹配。

只需要改两行:

 a = 3   
 b = 1

import csv

coordinates = 'all_6_ligand_coordinates.dat'
a = '3'
b = '1'
with open(coordinates,'r') as file_in:
    reader = csv.reader(file_in)
    your_list = list(reader)
    for x, y in your_list:
        if x == a and y == b:
           print("Cool")
           print("1")
        else: 
           print("sucks to be you")

打印出一个列表,大约有88811行,一些
Cool 1
和其他人
sucks to be you

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2017-12-25
    • 2012-01-28
    • 2017-03-25
    相关资源
    最近更新 更多