【发布时间】:2020-05-24 18:06:56
【问题描述】:
我有另一个程序(我没有源代码)写入文本文件,然后当我尝试像这样读取文本文件时,
with open("domain.com/alive_domains.txt") as f:
for line in f:
print(line)
输出是这样的:(这是直接从 pycharm 的控制台窗口复制和粘贴的)
http://stage.oidc.payments.domain.com
https://oidc.help.domain.com
https://search.domain.com
https://oidc.payments.domain.com
https://stage.oidc.payments.domain.com
http://stage.oidc.help.domain.com
https://stage.oidc.help.domain.com
由于某种原因,有一些奇怪的换行符,我认为它们不是换行符
我试图通过做类似的事情来解决这个问题
abc = "abcdefghijklmnopqrstuvwxyz:/."
def fix_string(s):
new_s = ""
for char in s:
if char in abc:
new_s += char
return ''.join(new_s)
with open("domain.com/alive_domains.txt") as f:
for line in f:
print(fix_string(line))
我得到了相同的输出..
我尝试谷歌搜索,发现了这个正则表达式
with open("domain.com/alive_domains.txt") as f:
for line in f:
line = re.sub("[^a-z0-9/.:]+","", line, flags=re.IGNORECASE)
print(fix_string(line))
再一次,它给了我与新行相同的输出
我尝试逐行读取的任何其他文件都不会这样做。有没有办法识别奇怪的字符?如果有的话
【问题讨论】:
-
如果您认为从文件中读取了一个奇怪的字符,请尝试运行
[ord(c) for c in line]并检查超出预期 ASCII 范围的值。 -
@Brian 好的,刚刚试过,似乎没问题,它似乎有自己的线路(?)当我循环遍历线路时,它是每隔一行,所以第 1 行将是URL,然后第 2 行是空白的,即使我尝试执行 [ord(c) for c in line],它也会给我一个空数组,其中没有任何项目
-
即使我在文件的第 2 行没有看到空行
-
但是我可以检查行的长度...我猜