我有一个字符串变量,其中包含来自大文本文件的输入。文本文件中的注释以“#”开头,以新行结尾。
所以,我想做的是从此字符串生成另一个字符串,其中删除了所有以“#”开头并以换行符结尾的注释行。
所以,我想我可以做一些事情,我可以将字符串拆分为:
def transform_string(input):
output = ''
# Look for #
sub_strs = input.split('#')
for s in sub_strs:
# Look for newline
sub_sub_strs = s.split('\r\n')
for j in sub_sub_strs:
output += j
return output
但是,它看起来很难看,我想知道是否有更优雅的 pythonic 方式来做到这一点。而且,这很容易出错。因为每个“#”都有一个对应的换行符,所以我想在第一次出现时进行拆分,而不是完全拆分“\r\n”,我想。
最佳答案
生成器可能是这里最 Pythonic 的解决方案:
def clean_input(filename):
with open(filename, 'r') as f:
for line in f:
if not line.lstrip().startswith('#'):
yield line
for line in clean_input('somefile.txt'):
...
这允许您将注释剥离或您需要的任何其他预处理从文件的实际处理中移开,您可以在这些文件中迭代清理过的数据。
关于python - 从字符串中剥离注释行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801907/