我正在读取Python脚本中的文件,如下所示:
#im a useless comment
this is important
我写了一个脚本来阅读和分割"这很重要"部分并忽略以#
开头的注释行。
我只需要第一个和最后一个词(在我的情况下"这个"和#34;重要")。
有没有办法告诉Python我不需要拆分的某些部分?
在我的例子中,我有我想要的东西并且有效。
但是如果字符串更长并且我有10个未使用的变量,我猜它不会像程序员那样。
这是我的代码:
#!/usr/bin/python3
import re
filehandle = open("file")
for line in file:
if re.search("#",line):
break;
else:
a,b,c = line.split(" ")
print(a)
print(b)
filehandle.close()
答案 0 :(得分:1)
另一种可能性是:
a, *_, b = line.split()
print(a, b)
# <a> <b>
如果我没记错的话,*_
不向后兼容,这意味着你需要Python 3.5 / 6或更高版本(这里真的需要查看更改日志)。
答案 1 :(得分:0)
您可以将结果保存到列表中,并获取第一个和最后一个元素:
res = line.split(" ")
# res[0] and res[-1]
如果要打印每个第3个元素,可以使用:
res[::3]
否则,如果您没有特定模式,则需要按索引手动提取元素。
有关详细信息,请参阅split文档。
答案 2 :(得分:0)
如果我理解了你的问题,你可以试试这个:
s = "this is a very very very veeeery foo bar bazzed looong string"
splitted = s.split() # splitted is a list
splitted[0] # first element
splitted[-1] # last element
str.split()
使用sep作为分隔符字符串,返回字符串中的list
个单词。 ...如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随,则结果将在开头或结尾处不包含空字符串空格。
通过这种方式,您可以获得字符串的第一个和最后一个字。
答案 3 :(得分:0)
在第8行,使用以下代替
a,b,c = line.split(" ")
使用:
splitLines = line.split(" ")
a, b, c = splitLines[0], splitLines[1:-1], splitLines[-1]
python中的负索引,从最后一个解析。 More info
答案 4 :(得分:0)
我认为python negative indexing
可以解决您的问题
import re
filehandle = open("file")
for line in file:
if re.search("#",line):
break;
else:
split_word = line.split()
print(split_word[0]) #First Word
print(split_word[-1]) #Last Word
filehandle.close()
答案 5 :(得分:0)
对于多行文字(re.search()
功能):
import re
with open('yourfile.txt', 'r') as f:
result = re.search(r'^(\w+).+?(\w+)$', f.read(), re.M)
a,b = result.group(1), result.group(2)
print(a,b)
输出:
this important