如何从文件中的一行中只取一个单词并将其保存在某个字符串变量中? 例如,我的文件有行" this,line,is,super"我想在变量字中只保存第一个单词(" this")。我试着逐字逐句地阅读它,直到我进入","但是当我检查它时,我收到了一个错误"类型' int'是不可迭代的#34;。我该怎么做?
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
答案 0 :(得分:2)
你可以使用split()
:
line = file.readline()
if "," in line:
split_line = line.split(",")
first_word = split_line[0]
print(first_word)
split()
将创建一个列表,其中每个元素都是一个单词。逗号不包括在内。
答案 1 :(得分:1)
乍一看,你是在正确的轨道上但是如果你总是考虑存储在哪里的数据类型,你可以解密一些错误。例如,你的条件“if”,“len(line)”没有意义,因为它转换为'if',“in 21”。其次,你在线上迭代每个角色,但你对i的价值并不是你的想法。你想要你的for循环中那个点的字符索引,检查是否有“,”,但是line [i]不像line [0],正如你想象的那样,它实际上是行['t “]。很容易假设我总是字符串中的整数或索引,但你想要的是一系列整数值,等于行的长度,迭代,并找到每个索引的相关字符。我已经重新格式化了您的代码,以按照您的预期方式工作,返回word =“this”,并记住这些说明。我希望你找到这个教学(有更短的方法和内置的方法来做到这一点,但理解索引在编程中是至关重要的)。假设line是字符串“this,line,is,super”:
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