我是python的新手。尝试编写将使用文件中的数字列的脚本,其中还包含标头。这是一个文件示例:
@File_Version: 4
PROJECTED_COORDINATE_SYSTEM
#File_Version____________-> 4
#Master_Project_______->
#Coordinate_type_________-> 1
#Horizon_name____________->
sb+
#Horizon_attribute_______-> STRUCTURE
474457.83994 6761013.11978
474482.83750 6761012.77069
474507.83506 6761012.42160
474532.83262 6761012.07251
474557.83018 6761011.72342
474582.82774 6761011.37433
474607.82530 6761011.02524
我想跳过标题。这是我尝试过的。如果我知道哪些字符会出现在标题中,例如“#”和“ @”,它当然起作用。但是,如何跳过所有包含字母字符的行?
in_file1 = open(input_file1_short, 'r')
out_file1 = open(output_file1_short,"w")
lines = in_file1.readlines ()
x = []
y = []
for line in lines:
if "#" not in line and "@" not in line:
strip_line = line.strip()
replace_split = re.split(r'[ ,|;"\t]+', strip_line)
x = (replace_split[0])
y = (replace_split[1])
out_file1.write("%s\t%s\n" % (str(x),str(y)))
in_file1.close ()
非常感谢你!
最佳答案
我认为您可以使用一些内置的插件,例如:
import string
for line in lines:
if any([letter in line for letter in string.ascii_letters]):
print "there is an ascii letter somewhere in this line"
但是,这只是在寻找ascii字母。
您还可以:
import unicodedata
for line in lines:
if any([unicodedata.category(unicode(letter)).startswith('L') for letter in line]):
print "there is a unicode letter somewhere in this line"
但前提是我能正确理解我的unicode类别。
甚至更干净(使用其他答案的建议。这适用于unicode行和字符串):
for line in lines:
if any([letter.isalpha() for letter in line]):
print "there is a letter somewhere in this line"
但是,有趣的是,如果您这样做:
在[57]中:u'\ u2161'.isdecimal()
出[57]:错误
在[58]中:u'\ u2161'.isdigit()
出[58]:错误
在[59]中:u'\ u2161'.isalpha()
Out [59]:错误
罗马数字“ Two”的unicode都不是,
但是unicodedata.category(u'\ u2161')确实返回了表示数字的“ Nl”(而u'\ u2161'.isnumeric()为True)。