0

所以,我已经有了从文本中取出所有带数字的单词的代码,现在我需要做的就是将文本全部放在一行中。

with open("lolpa.txt") as f:
    for word in f.readline().split():
        digits = [c for c in word if c.isdigit()]
        if not digits:
            print(word)

拆分使单词都在不同的列中。如果我取出.split(),它会输入不带数字的单词,实际上只是从单词中取出数字,并使每个字母位于不同的列中。

编辑:是的,print(word,end=" ")工作,谢谢。但我也希望脚本现在只读取一行。它无法读取第 2 行或第 3 行等上的任何内容。

第二个问题是脚本只读取第一行。所以如果第一行的输入是

i li4ke l0ke like p0tatoes potatoes
300 bla-bla-bla 00bla-bla-0211

输出将是

i like potatoes
4

4 回答 4

5

在 Python v 3.x 中,您将使用

print(word, end='')

避免换行符。

在 Python v 2.x 中

print word,

您将在要打印的项目末尾使用逗号。请注意,与 v3 不同,您会在连续打印之间得到一个空格

请注意,这print(word),不会阻止 v 3.x 中的换行符。

--

基于原始帖子重新代码问题中的编辑进行更新:

有输入:

i li4ke l0ke like p0tatoes potatoes
300 bla-bla-bla 00bla-bla-0211

这段代码:

def hasDigit(w):
   for c in w:
      if c.isdigit():
         return True
   return False

with open("data.txt") as f:
    for line in f:
        digits = [w for w in line.split() if not hasDigit(w)]
        if digits:
            print ' '.join(digits)
#   break  # uncomment the "break" if you ONLY want to process the first line 

将产生所有不包含数字的“单词”:

i like potatoes
bla-bla-bla    <-- this line won't show if the "break" is uncommented above

注意

如果您只想处理文件的第一行,或者问题是您的脚本处理了第一行,这篇文章有点不清楚。根据break语句是否被注释掉,此解决方案可以以任何一种方式工作。

于 2012-08-08T02:48:10.380 回答
0

如果您使用的是 python 3.x,您可以执行以下操作:

 print (word,end="")

禁止换行——python 2.x 使用了有点奇怪的语法:

 print word,  #trailing comma

或者,使用sys.stdout.write(str(word)). (这适用于 python 2.x 和 3.x)。

于 2012-08-08T02:47:52.263 回答
0
with open("lolpa.txt") as f:
    for word in f.readline().split():
        digits = [c for c in word if c.isdigit()]
        if not digits:
            print word,
    print

不是,在结尾print

于 2012-08-08T02:47:58.243 回答
0

你可以使用join()

with open("lolpa.txt") as f:
    print ' '.join(str(x.split()) for x in f if not [c for c in x.split() if c.isdigit()])        

使用一个简单的 for 循环:

import sys
with open("data.txt") as f: 
    for x in f:                #loop over f not f.readline()
        word=x.split()
        digits = [c for c in word if c.isdigit()]
        if not digits:
            sys.stdout.write(str(word))  #from mgilson's solution
于 2012-08-08T03:03:18.077 回答