我对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
有人可以帮帮我吗?
答案 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数组。