当条件为“if' - 'in string:”时,为什么“print(string)”不打印字符串

时间:2017-11-25 08:02:03

标签: python-3.x

我对Python很新,并且已经在stackoverflow上浏览了Answers,但还没有解决这个问题。

我正在尝试在Python中执行一个简单程序,从文本中打印 -26.507 ,如下所示:

my_string = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
my_string.split()
print(my_string)
for string in my_string:
    if '-' in string:
        print (string)

这里,print(my_string)会打印整个字符串。 但第二个打印语句仅打印 - 而不是 -26.507

有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:4)

当您.split()字符串时,如果不将其分配给变量,实际上不会将字符串“拆分”为列表。它不会修改字符串my_string因此当您执行for string in my_string时,您最终会得到单个字符。

执行以下操作,您将看到结果:

my_string = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
my_string.split()
for i, v in enumerate(my_string):
    print(i, v)

其中i是索引,v是值。

执行以下操作,即将“拆分字符串”分配给变量(变为列表),您将看到不同的输出。

my_string = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
my_list = my_string.split()
for i, v in enumerate(my_list):
    print(i, v)

这可能更像你想要的。

从这里开始尝试进一步分割/枚举。

答案 1 :(得分:2)

这就是你想要的:

my_string = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
strings = my_string.split()
print(my_string)
for string in strings:
    if '-' == string[0]:
        print (string)

您犯的主要错误是:my_string.split()实际上并未更改my_string,而是返回my_string的部分列表,在空格处拆分。因此,当您执行for string in my_string时,您正在迭代字符串my_string中的每个字符,当您认为您正在迭代每个单词时。通过将新变量指定为单词列表,您可以迭代单词。

答案 2 :(得分:2)

你可能想在python中做什么

line = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
elements = line.split()
for i in elements:
    if '-' in i:
        print(i)

如果你知道元素总是在哪里,你也可以将它放在一行中。当我们将您的文本转换为文本列表时,我们可以按如下方式查询:

line.split()[-2]

答案 3 :(得分:1)

请尝试以下代码:

my_string = "                                         latitude        longitude       N         error (95% confidence interval) Station Name                            ddd mm ss.sssss ddd mm ss.sssss  meters    meters USER LOCATION                            28  0  0.00000  95  0  0.00000  -26.507    0.096"
new_string = my_string.split()
print(new_string)
for string in new_string:
    if '-' in string:
        print (string)

我想你会明白这一点。您正在拆分my_string,但my_string不包含spitted数组。