String 从第行中只获取一个单词
如何从文件中的一行中只提取一个单词并将其保存在某个字符串变量中? 例如,我的文件有一行“this,line,is,super”,我只想在变量word中保存第一个单词(“this”)。我试着一个字符一个字符地读它,直到读到“但当我检查它时,我发现一个错误”类型为“int”的参数是不可写的。我怎么做这个String 从第行中只获取一个单词,string,python-2.7,file,String,Python 2.7,File,如何从文件中的一行中只提取一个单词并将其保存在某个字符串变量中? 例如,我的文件有一行“this,line,is,super”,我只想在变量word中保存第一个单词(“this”)。我试着一个字符一个字符地读它,直到读到“但当我检查它时,我发现一个错误”类型为“int”的参数是不可写的。我怎么做这个 line = file.readline() # reading "this, line, is, super" if "," in len(line): # checking, if it
line = file.readline() # reading "this, line, is, super"
if "," in len(line): # checking, if it contains ','
for i in line:
if "," not in line[i]: # while character is not ',' -> this is where I get error
word += line[i] # add it to my string
您可以这样做,使用
split()
:
split()。逗号将不包括在内。您可以这样做,使用split()
:
split()。不包括逗号。 一目了然,你是在正确的轨道上,但是如果你总是考虑数据类型存储在哪里,你可以破译一些错误的东西。例如,您的条件“if”,“in len(line)”没有意义,因为它被翻译为“if”,“in 21”。第二,您迭代行中的每个字符,但您对i的值不是您所想的。您希望在for循环中该点处的字符索引,以检查是否存在“,”,但第[i]行与第[0]行不同,正如您所想象的,它实际上是第['t'行]。很容易假设i在字符串中始终是一个整数或索引,但您需要的是一个整数值范围,该范围等于行的长度,用于迭代并在每个索引处查找关联字符。我已经重新格式化了您的代码,使其按照您想要的方式工作,返回word=“this”,并牢记这些说明。我希望您能发现这一点(有一些较短的方法和内置的方法可以做到这一点,但理解索引在编程中是至关重要的)。假设line是字符串“this,line,is,super”:
一瞥,你是在正确的轨道上,但是如果你总是考虑数据类型存储在哪里,你可以破译一些错误的东西。例如,您的条件“if”,“in len(line)”没有意义,因为它被翻译为“if”,“in 21”。第二,您迭代行中的每个字符,但您对i的值不是您所想的。您希望在for循环中该点处的字符索引,以检查是否存在“,”,但第[i]行与第[0]行不同,正如您所想象的,它实际上是第['t'行]。很容易假设i在字符串中始终是一个整数或索引,但您需要的是一个整数值范围,该范围等于行的长度,用于迭代并在每个索引处查找关联字符。我已经重新格式化了您的代码,使其按照您想要的方式工作,返回word=“this”,并牢记这些说明。我希望您能发现这一点(有一些较短的方法和内置的方法可以做到这一点,但理解索引在编程中是至关重要的)。假设line是字符串“this,line,is,super”:
谢谢你解释我的错误。:)更感谢您根据我的想法调整您的解决方案。感谢您解释我的错误。:)更感谢您根据我的想法调整您的解决方案。谢谢。:)你的解决方案非常简洁,将来我可能会使用你的想法。如果我有能力选择两个最好的答案,我当然也会选择你的。但我需要选择一种方法,在这种情况下,我认为更好的解释比优雅的方法更有价值。谢谢。)你的解决方案非常简洁,将来我可能会使用你的想法。如果我有能力选择两个最好的答案,我当然也会选择你的。但我需要选择一种方法,在这种情况下,我认为这是一种比优雅的方法更有价值的解释。
line = file.readline()
if "," in line:
split_line = line.split(",")
first_word = split_line[0]
print(first_word)
if "," in line: # checking that the string, not the number 21, has a comma
for i in range(0, len(line)): # for each character in the range 0 -> 21
if line[i] != ",": # e.g. if line[0] does not equal comma
word += line[i] # add character to your string
else:
break # break out of loop when encounter first comma, thus storing only first word