单行打印无效 Python 3
Print on a single line not working Python 3
我是编程新手,正在编写一些代码以从一堆文本文件中提取数据。我已经能够做到这一点,但是 Excel 中的数据对我没有用。因此,我想将它们全部打印在一行上并用一个特殊字符分隔,然后我可以在 Excel.
中分隔它
这是我的代码:
import os
data=['Find me','find you', 'find us']
with open('C:\Users\Documents\File.txt', 'r') as inF:
for line in inF:
for a in data:
string=a
if string in line:
print (line,end='*') #print on same line
inF.close()
所以基本上我所做的是查找关键字是否在该行上,如果是则打印该行。
即使我有 print(,end='*'),我也没有在一行中打印。它输出:
Find me
*find you
*find us
问题出在哪里? (我正在使用 Python 3.5.1)
您的直接问题是您没有在打印之前从您的行中删除换行符。通常的做法是使用 strip()
,例如:
print(line.strip(), end='*')
如果一行中出现多个特殊短语,您还将打印该行的多份副本。为避免这种情况,请在打印后添加 break
语句,或者(更好,但更高级的构造在您习惯生成器表达式之前可能没有意义)使用 if any(keyword in line for keyword in data):
您也不需要显式关闭输入文件 - with open(...) as ...:
上下文管理器的要点是它在退出时关闭文件。
我会避免使用 string
作为变量名——它不会告诉任何人变量的用途,如果你最终使用内置的 string
任何模块。它不像隐藏 list
这样的内置构造函数那么糟糕,但值得避免。特别是因为它在这里对你没有任何作用,如果你不想使用上面的 any()
版本,你可以在这里使用 if a in line:
。
除此之外,如果您的数据不是非常大(如果您试图将所有数据都放在一行中,我希望不会如此),您将获得更整洁的代码并通过使用避免尾随定界符字符串上的 .join()
方法,例如:
import os
data=['Find me','find you', 'find us']
with open('C:\Users\Documents\File.txt', 'r') as inF:
print "*".join(line.strip() for line in inF if any(keyword in line for keyword in data))
我是编程新手,正在编写一些代码以从一堆文本文件中提取数据。我已经能够做到这一点,但是 Excel 中的数据对我没有用。因此,我想将它们全部打印在一行上并用一个特殊字符分隔,然后我可以在 Excel.
中分隔它这是我的代码:
import os
data=['Find me','find you', 'find us']
with open('C:\Users\Documents\File.txt', 'r') as inF:
for line in inF:
for a in data:
string=a
if string in line:
print (line,end='*') #print on same line
inF.close()
所以基本上我所做的是查找关键字是否在该行上,如果是则打印该行。
即使我有 print(,end='*'),我也没有在一行中打印。它输出:
Find me
*find you
*find us
问题出在哪里? (我正在使用 Python 3.5.1)
您的直接问题是您没有在打印之前从您的行中删除换行符。通常的做法是使用 strip()
,例如:
print(line.strip(), end='*')
如果一行中出现多个特殊短语,您还将打印该行的多份副本。为避免这种情况,请在打印后添加 break
语句,或者(更好,但更高级的构造在您习惯生成器表达式之前可能没有意义)使用 if any(keyword in line for keyword in data):
您也不需要显式关闭输入文件 - with open(...) as ...:
上下文管理器的要点是它在退出时关闭文件。
我会避免使用 string
作为变量名——它不会告诉任何人变量的用途,如果你最终使用内置的 string
任何模块。它不像隐藏 list
这样的内置构造函数那么糟糕,但值得避免。特别是因为它在这里对你没有任何作用,如果你不想使用上面的 any()
版本,你可以在这里使用 if a in line:
。
除此之外,如果您的数据不是非常大(如果您试图将所有数据都放在一行中,我希望不会如此),您将获得更整洁的代码并通过使用避免尾随定界符字符串上的 .join()
方法,例如:
import os
data=['Find me','find you', 'find us']
with open('C:\Users\Documents\File.txt', 'r') as inF:
print "*".join(line.strip() for line in inF if any(keyword in line for keyword in data))